Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Scientist

move_uploaded_file não funciona

Recommended Posts

Estou tentando usar o move_uploaded_file mais não funciona , já tentei comandos simples como este:

 

move_uploaded_file("C:\teste.txt","C:\teste2.txt");

 

e não funciona .. alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não é assim, essa função serve para mover arquivos ENVIADOS POR UPLOAD, mas desse jeito que está tentando fazer, o arquivo não foi enviado, ele já está lá.

move_uploaded_file("C:\teste.txt","C:\teste2.txt");

 

Se é pra mover arquivos que já estão no servidor, use a função rename()

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloquei o multi/data no form sim

 

Rick, o que quero fazer é que o usuário passe uma foto no formulario e eu pegue esta foto e coloque em outra pasta , no caso como eu estou trabalhando localmente apenas para teste, estou tentando usar o move_uploaded_file para pegar esta foto (que está na minha propria maquina) e colocar em uma pasta do site como essa: ../admin/fotos/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se é pra enviar o arquivo, você precisa de um campo

<input type="file" name="file"/>

, e no form colocar enctype="multipart/form-data".

Ao enviar o form, você vai usar a variável superglobal $_FILES:

$upFile = $_FILES['file']; //Esse índice 'file' é o atributo NAME do input do formulário
$tmpName = $upFile['tmp_name'];
$fileName = $upFile['name'];
$error = (int) $upFile['error'];
if($error == 0){
if(move_uploaded_file($tmpName, '../admin/fotos/'.$fileName)){
     	echo 'Arquivo enviado com sucesso!';
} else {
     	echo 'Problemas ao mover o arquivo.';
}
} else {
echo 'Problemas ao enviar o arquivo.';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou lhe mostrar tudo que estou fazendo .. passo a passo :

 

1 - Escolhe arquivo:

<input  name="foto" type="file" id="foto" size="60" />

 

2 - Vai para a pagina cad_loja_persist.php, ela vai criar um objeto PojoLoja para posteriormente salvar no banco:

  $pojo->setFoto($_FILES['foto']['tmp_name']); 

 

3 - Depois salva no banco o objeto, e chama o trataFoto para ele atualizar o caminho e colocar a foto no local apropriado:

 

mysql_query($sql) or die("Não foi possível inserir esta loja");   

	SalvarFotoNoBD($loja->getFoto(), mysql_insert_id(), "LOJA", "FOTO_LOJA", "COD_LOJA", mysql_insert_id(), "loja");

 

4 - Vou postar o codigo completo do meu trataFoto:

 

<?php


    function SalvarFotoNoBD($foto, $nome_novaFoto, $tabela, $campo_foto, $campo_cod, $cod, $pasta){
		if (ValidarImagem($foto)){

		// Pega extensão da imagem
		$infoimg = getimagesize($foto);
		if ($infoimg[2] == 1)
		$ext = "gif";
		else if ($infoimg[2] == 2)
		$ext = "jpg";
		else if ($infoimg[2] == 3)
		$ext = "png";
		else if ($infoimg[2] == 6)
		$ext = "bmp";


       	// Gera um nome único para a imagem
       	$nome_imagem = $nome_novaFoto . "." . $ext;

       	// Caminho de onde ficará a imagem
       	$caminho_imagem = "/foto/".$pasta."/". $nome_imagem;

		// Faz o upload da imagem para seu respectivo caminho
		move_uploaded_file($foto,$caminho_imagem) or die("Não foi possível salvar a foto no servidor FTP");

		$sql = "UPDATE $tabela SET $campo_foto = '$caminho_imagem' WHERE $campo_cod = $cod";   


		mysql_query($sql) or die ("Não foi possível inserir a foto no Banco de Dados");
		} else
		return false;
  }


   function ValidarImagem($foto){
if ((!empty($foto)) && (ValidarTamanho($foto)) && (ValidarFormato($foto))) {
	return true;
}
else{
	 echo "Selecione uma imagem correta <br>";
	 return false;
}

  }

   function ValidarTamanho($foto){
// Largura máxima em pixels
	$largura = 300;
	// Altura máxima em pixels
	$altura = 300;
	// Tamanho máximo do arquivo em bytes
	$tamanho = 2097152;

	// Pega as dimensões da imagem
	$dimensoes = getimagesize($foto);
	$size = filesize($foto);
       $error = 0;
	// Verifica se a largura da imagem é maior que a largura permitida
	if($dimensoes[0] > $largura) {
		$error = $error + 1;
	}

	// Verifica se a altura da imagem é maior que a altura permitida
	if($dimensoes[1] > $altura) {
		$error = $error + 1;

	}

	// Verifica se o tamanho da imagem é maior que o tamanho permitido
	if($size > $tamanho) {
		$error = $error + 1;

	}

	if ($error > 0) {
		echo "Tamanho da imagem inválido !! <br>";
		return false;
	}else {
	return true;	
	}

  }


   function ValidarFormato($foto){
  $infoimg = getimagesize($foto);
  if (($infoimg[2] == 1) || ($infoimg[2] == 2) || ($infoimg[2] == 3) || ($infoimg[2] == 6)) { 
  return true;
  }else {
	  echo "Formato inválido !!<br>";
	  return false;
  }

  } 





?>

 

 

Sempre da o erro que eu configurei no die do move_uploaded_file

 

 ("Não foi possível salvar a foto no servidor FTP") 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Note que existem dois nomes diferentes para o arquivo enviado:

$tmpName = $upFile['tmp_name'];
$fileName = $upFile['name'];

 

$tmpName é o nome temporário, dado pelo servidor PHP e $fileName é o nome do arquivo enviado.

Para usar o move_uploaded_file, o primeiro parâmetro precisa ser o nome temporário e o segundo parâmetro o destino final do arquivo /local/da/pasta/nome_do_arquivo.ext

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.