Jump to content
Filipe Silva

Upload de imagem

Recommended Posts

Boa noite, 

Estou com dificuldade em programar a parte de upload de imagem de um site e acredito que seja no próprio php.
Todas as linhas são inseridas no banco de dados do mysql, mas a coluna "imageFile" no phpMyAdmin não recebe o nome da imagem  e também não transfere a imagem para a pasta "up".


Este é o HTML

<form action="post.php" method="post" enctype="multipart/form-data">
					<p><input type="text" name="codBook" placeholder="Código do Livro"></p>
					<p><input type="text" name="titleBook" placeholder="Titulo" require></p>
					<p><input type="text" name="actor" placeholder="Autor" require></p>
					<p><input type="text" name="priceSugest" placeholder="Preço" require></p>
					<p><input type="text" name="category" placeholder="Categoria" require></p>
					<p><input type="text" name="estante" placeholder="Estante" require></p>
					<p><input type="text" name="status" placeholder="Status" require></p>
					<p><input type="text" name="feira" placeholder="Feira" require></p>
					<p><input type="hidden" name="MAX_FILE_SIZE" value="100000" />
					<p>Enviar capa do livro: <input name="bookfile" type="file" />
					<p><input type="hidden" name="act" value="insert"></p>
					<p><input type="submit" name="submit" value="Cadastrar"></p>
					<?php

					error_reporting(0);					
					if($_GET['sucess'] == 1){					
					echo '<p style="color: #FF0;">Livro Cadastrado com Sucesso!</p>';
					}
					?>
</form>

E este o post.php

<?php
	require('config.php');
	require('connection.php');
	require('database.php');
	
	
	if(isset($_POST['submit'])) {			
		if($_POST['act'] == 'insert'){
         	$file	 	= $_FILES['bookfile'];
		
			$fileName	= $_FILES['bookfile']['name'];
			$fileTmpName	= $_FILES['bookfile']['tmp_name'];
			$fileSize	= $_FILES['bookfile']['size'];
			$fileError	= $_FILES['bookfile']['error'];
			$fileType	= $_FILES['bookfile']['type'];
			
			$fileExt		= explode('.', $fileName);
			$fileActualExt	= strtolower(end($fileExt));

			$allowed	= array('jpg', 'jpeg', 'png', 'pdf');	
			if(in_array($fileActualExt, $allowed)) {
				if($fileError === 0){
					if($fileSize < 100000){
						$fileNameNew	= uniqid('', true).".".$fileActualExt;
						$fileDestination= 'up/'.$fileNameNew;
						move_uploaded_file($fileTmpName, $fileDestination);
					} else {
						echo "O seu arquivo de upload é muito grande!";
					}
				}else {
					echo "Erro de upload em seu arquivo de imagem!";
				}
			}else{
				echo "Você não pode fazer upload de imagem com este formato!";
			}
			$library = array(	
			'codBook'	 =>	$_POST['codBook'],
			'titleBook'	 =>	$_POST['titleBook'],
			'actor'		 =>	$_POST['actor'],
			'priceSugest'	 => 	$_POST['priceSugest'],
			'category'	 =>	$_POST['category'],
			'estante'	 =>	$_POST['estante'],
			'status'	 =>	$_POST['status'],
			'feira'		 =>	$_POST['feira'],
			'imageFile'	=> $_FILES['bookfile'], //NOVA LINHA INSERIDA PARA UPLOAD
			);
			DBCreate('books', $library);
			header("location: view.php?sucess=1");
		}
		
	}
	else{
		header("location: index.php"); //RETORNAR PARA INDEX.PHP
	}
	
?>


Caso alguém saiba o problema e possa me ajudar, serei grato, pois estou com esse problema a várias semanas tentando resolver.

 

 

Share this post


Link to post
Share on other sites
3 horas atrás, rockrgo disse:

Para salvar o arquivo você deve passar o caminho absoluto da pasta no seu servidor. Usa a variável $_SERVER["DOCUMENT_ROOT"] para pegar o path raiz.

if(isset($_POST['submit'])) {
		if($_POST['act'] == 'insert'){
			if(isset($_FILES['bookfile'])){
				$ext 	= strtolower(substr($_FILES['bookfile']['name'], -4)); // GET EXTENSION .JPG .PNG .BMP
				$newName= md5(time()).$ext; 								  //DEFINE NAME OF IMAGE
				$dir	= "upload/";				 							//DEFINE DIRECTORY
				
				move_uploaded_file($_FILES['bookfile']['tmp_name'], $dir.$newName); //UPLOAD
								
					$library = array(	
					'codBook'	 =>	$_POST['codBook'],
					'titleBook'	 =>	$_POST['titleBook'],
					'actor'		 =>	$_POST['actor'],
					'priceSugest'=> $_POST['priceSugest'],
					'category'	 =>	$_POST['category'],
					'estante'	 =>	$_POST['estante'],
					'status'	 =>	$_POST['status'],
					'feira'		 =>	$_POST['feira'],
					'imageFile'  => $newName,
					);
					DBCreate('books', $library);
					header("location: view.php?sucess=1");
			}
		}
		
	}
	else{
		header("location: index.php"); //RETORNAR PARA LOGIN.PHP
	}

Eu modifiquei o código e agora estou conseguindo puxar a extensão do arquivo e alterar o nome, mas o arquivo não esta indo para a pasta. Tentei usar $dir = $_SERVER["DOCUMENT_ROOT"].'upload/';
Só que não deu certo, esse caminho absoluto no caso, seria a partir do www/livraria/admin/upload/ ?
Eu procurei a respeito do $_SERVER[''DOCUMENT_ROOT"] , mas não consegui entender rockrgo.

 

-----------------------------------------------------------------------

Array ( [Document Root] => C:/wamp64/www )
Depois do www => /sebo_new/admin/upload

Só que mesmo assim ainda não consegui definir o caminho absoluto.

Share this post


Link to post
Share on other sites
20 horas atrás, rockrgo disse:

$dir = $_SERVER["DOCUMENT_ROOT"]."/livraria/admin/upload/";

 

rockrgo obrigado por me ensinar sobre o $_SERVER, eu tentei de várias formas e não fez a transferência, e hoje pela manhã consegui encontrar o erro, não estava nos código de PHP, mas sim no html, já estava entrando em desespero por nenhuma solução funcionar. Compartilharei com você este erro que estava em meu código.  Não imaginava que esta linha estava interferindo em tudo.

<p><input type="hidden" name="MAX_FILE_SIZE" value="100000" />    <--- Essa linha no formulário que não permitia o arquivo chegar na pasta, quando deletei essa linha deixando apenas a debaixo, funcionou o upload e transferiu corretamente.
<p>Enviar capa do livro: <input name="bookfile" type="file" />



 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Wallcrawler
      Olá pessoal tudo bem? Estou tentando fazer a cópia de uma imagem que está disponível na web e salvar em uma pasta no meu projeto. Essa imagem está sob protocolo SSL mas navegador consegue acessá-la normalmente. Mas o meu script php é bloqueado, e não entendo o porquê.
       
      Segue o código que estou usando:
      <?php //error_reporting(E_ALL ^ E_DEPRECATED); //ini_set('display_errors', 1); //die('Script travado!'); $start = microtime(true); set_time_limit(0); function save_image($inPath,$outPath) { //Download images from remote server $in = fopen($inPath, 'rb'); $out = fopen($outPath, 'wb'); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/classes/Rpi.class.php'); include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/functions.class.php'); $func = new FuncoesAuxiliares(); $rpi = new Rpi(); if(!isset($_GET['num_processo'])) { $rows = $rpi->Consulta('select num_processo, classe, especificacao from processos order by num_processo ASC limit 1'); } else { $rows = $rpi->Consulta("select num_processo, classe, especificacao from processos where num_processo > '" . $_GET['num_processo'] . "' order by num_processo ASC limit 1"); } $registros = 0; $arrayInsert = array(); $qtd_caracteres_total = 14; foreach ($rows as $rs) { //$rs['num_processo'] $zeros = ''; $qtd_char_processo = strlen($rs['num_processo']); //Fill zeros for($i=0; $i < ($qtd_caracteres_total - $qtd_char_processo); $i++) { $zeros .= '0'; } echo('BR5' . $zeros . $rs['num_processo'] . '<br>'); $url = 'http://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo']; //Aqui tento acessar a imagem e salvar na pasta correspondente save_image($url, __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); //copy('https://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo'], __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); $processo = $rs['num_processo']; $registros++; } $registros = number_format($registros, 0, ',', '.'); // Display Script End time $time_end = microtime(true); //dividing with 60 will give the execution time in minutes other wise seconds $execution_time = ($time_end - $start)/60; //execution time of the script echo '<b>Total Execution Time:</b> '. $execution_time .' Mins <hr><br><br>Registros: ' . $registros . '<br><br>'; echo("<a href='down_logo.php?num_processo=" . $processo ."' target='_self'>Próxima página</a><br><br>"); ?> O erro retornado é o seguinte:
       
      Warning: fopen(): SSL: Connection reset by peer in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fopen(http://www.tmdn.org/tmview/trademark/image/BR500000825642590): failed to open stream: HTTP request failed! in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fread() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 12

      Warning: fclose() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 16
       
      Só que se você tentar acessar o endereço no browser, diretamente, a imagem aparece:
       
      https://www.tmdn.org/tmview/trademark/image/BR500000825642590 
       
      Onde posso estar errando? Obrigado pela atenção de todos.
    • By violin101
      Caros amigos,
       
      saudações...
       
      Estou escrevendo uma rotina de Carrinho de Compras e estou com problema na Library CART.
       
      Quando a Descrição do Produto ultrapassa 25 caracteres, o CART não é inserido.
       
      A library CART, estou chamando direto no AUTOLOAD.
       
      Como consigo resolver esse problema ?
       
      O Código para inserir está assim:
      <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Carrinho extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('site/carrinho_model'); } public function index() { $this->addCart(); } public function addCart() { //Recebe dados via POST $id_produto = $this->input->post("idPrds"); $descricao = $this->input->post("namPrds"); //Problema nesse Campo quando ultrapassa 25 caracteres - Não INSERE $quantidade = $this->input->post("qtds"); $preco = $this->input->post("vlrPrds"); $insert_dados = array( 'id' => $id_produto, 'name' => $descricao, 'price' => $preco, 'qty' => $quantidade ); $this->cart->insert($insert_dados); $this->load->view('site/estilo/header', $this->data); $this->load->view('site/carrinho'); } }  
       
      Grato,
       
      Cesar
       
       
       
       
    • By Bruno Ferreira da Silva
      Estou utilizando laravel 5.8.
      Meu problema é o seguinte, estou realizando o login com usuário e senha. O sistema entra na condição e debuga corretamente o usuário logado. e no mesmo momento que eu altero a url para ..../dashboard, ele redireciona como se estivesse deslogando. mas na segunda tentativa isso não acontece, ele realiza o login normalmente. Ai isso se repete sempre que troca de usuário. 
       
      O controller da dashboard chama apenas a view e mais nada. 
      public function authenticate(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { dd(Auth::user()); return redirect()->intended('dashboard'); } }  
    • By Sapinn
      Estou trazendo os dados do banco de dados e eles estão vindo com problema na acentuação
      uso o seguinte codigo no php
      <?php
      include_once ‘…/php/conexao.php’;
      header(‘Content-Type: text/html; charset=utf-8’);
      mysqli_query($conn,“SET NAMES ‘utf8’”);
      mysqli_query($conn,‘SET character_set_connection=utf8’);
      mysqli_query($conn,‘SET character_set_client=utf8’);
      mysqli_query($conn,‘SET character_set_results=utf8’);
      ?>
      E no html
      Mesmo assim as palavras com acento ficam com aquele erro desgraçado com a interrogação
      Alguem me ajuda ai
    • By Wanderson Moreira
      Boa tarde
      Alguém poderia me ajudar com uma situação?
       
      Estou tentado comparar datas para me retornar 3 situações: Vencendo, Vencido, e Ativo
      porem acredito que o formato delas estejam erradas, pois ao compará-las o valor retorna errado
       
      $data = date_create("30-07-2020"); $vencimento = date_format($data, "d-m-Y"); $dataHoje = date("d-m-Y"); $dataVencer = date('d-m-Y', strtotime('+15 days')); if($vencimento > $dataVencer){echo 'Ativo';}  
      no exemplo estou comparando se 30-07-2020 for maior > 07-08-2020 exibir o texto "Ativo"
      Porem 30-07-2020 não é maior do que 07-08-2020 e mesmo assim o valor retornado esta sendo "ativo"
       
       
       

       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.