Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicin182

Sistema de upload

Recommended Posts

Estou tentando fazer um sistema de upload, tentei começar do mais simples possivel mas ja deu erro, e é extranho não entendi, vocês poderiam me dar uma mão ?

 

upload.htm

<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Enviar o arquivo: <input type="file" name="arquivo" size="20"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
upload.php

<html>
<body>
<?php
if (copy($arquivo,"fotos/".$arquivo_name)){
echo("<b>Arquivo enviado com sucesso!</b>");
}else{
echo ("<b>Erro no envio do arquivo!</b>");
}
?>
</body>
</html>
O "erro" que retorna

Notice: Undefined variable: arquivo in D:\Arquivos de programas\EasyPHP 2.0b1\www\Teste\Upload\upload.php on line 4

Notice: Undefined variable: arquivo_name in D:\Arquivos de programas\EasyPHP 2.0b1\www\Teste\Upload\upload.php on line 4
Erro no envio do arquivo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando se faz um upload a imagem fica salva em um local temporario no servidor, entao copia ela desse enderreço para o local que voce quer, fazendo assim:

 

// Captura os dados vindo do seu upload
// Essa variavel $arquivo agora é um array
$arquivo = $_FILES['arquivo'];
// Captura o nome do arquivo passado
$arquivo_name = $arquivo["name"];
// Captura o nome em que ele foi armazenado no servidor
$arquivo_temp = $arquivo["tmp_name"];
// Move o arquivo para o local especificado
// Nota: a sua pasta deve existir ou ira dar erro
$copiar = copy($arquivo_temp,"fotos/".$arquivo_name);
// Verifica se a a copia foi bem sucessida, olhando o valor retornado
// Ela retorna TRUE se tiver dado certo e FALSE se tiver dado erro
if ($copiar == true){
echo("<b>Arquivo enviado com sucesso!</b>");
}else{
echo ("<b>Erro no envio do arquivo!</b>");
}

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
// Captura os dados vindo do seu upload
// Essa variavel $arquivo agora é um array
$arquivo = $_FILES['arquivo'];
// Captura o nome do arquivo passado
$arquivo_name = $arquivo["name"];
// Captura o nome em que ele foi armazenado no servidor
$arquivo_temp = $arquivo["tmp_name"];
// Move o arquivo para o local especificado
// Nota: a sua pasta deve existir ou ira dar erro
$copiar = copy($arquivo_temp,"fotos/".$arquivo_name);
// Verifica se a a copia foi bem sucessida, olhando o valor retornado
// Ela retorna TRUE se tiver dado certo e FALSE se tiver dado erro
if ($copiar == true){
echo("<b>Arquivo enviado com sucesso!</b>");
}else{
echo ("<b>Erro no envio do arquivo!</b>");
}
?>

Coloque isso do jeito que você falou, e retorna assim

 

Erro no envio do arquivo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique se a pasta para qual você está tentando enviar o arquivo, tem CHMOD 777.

Clica com o direito nela pelo teu programa ftp, e verifica as permissões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu programa PHP ?

Como assim ?

 

Eu acho que não está chmod 777 eu nem sei dar esse comando na pasta =/

 

Como faz ?

 

=D

 

Pelo que eu pesquisei chmod 777

eu acho que não precisar usar em localhost não como é o meu caso;

 

Ou precisa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

edita seu

upload.php

<?php
// Captura os dados vindo do seu upload
// Essa variavel $arquivo agora é um array
$arquivo = $_FILES['arquivo'];
// Captura o nome do arquivo passado
$arquivo_name = $arquivo["name"];
// Captura o nome em que ele foi armazenado no servidor
$arquivo_temp = $arquivo["tmp_name"];
// define o diretorio onde deve ir a foto
$diretorio = "fotos/"; 
if(!file_exists($diretorio)) { // se nao existir o diretorio ele cria o diretorio.
	mkdir($diretorio);
}
// Move o arquivo para o local especificado
// Nota: a sua pasta deve existir ou ira dar erro

$copiar = copy($arquivo_temp, $diretorio.$arquivo_name);
// Verifica se a a copia foi bem sucessida, olhando o valor retornado
// Ela retorna TRUE se tiver dado certo e FALSE se tiver dado erro
if ($copiar == true){
echo("<b>Arquivo enviado com sucesso!</b>");
}else{
echo ("<b>Erro no envio do arquivo!</b>");
}
?>

nota-se, ele cria o diretorio se voce estiver usando em seu Easyphp.

no seu servidor tem q ver se o servidor tem permissao de criar o diretorio.

 

senao voce tera que entrar com algum cliente de ftp.

e criar a pasta e mudar a permissao do diretorio. para 0777.

isso eh feito atravez do ftp ou pelo cpanel.

 

Luciano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo sendo em easyphp tem que dá o chmod ?

 

se não tiver que dár o chmod desse jeito aí não está funcionando retorna a mesma coisa;

 

Em minha maquina, alterei o codigo; não funcionou.

 

Mesmo eu estando em localhost precisa do chmod ?

 

Se precisar como eu logo no ftp ?

 

localhost root ****** ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigao, estude este codigo... tah bem comentado... nao se esqueca da conexao com o banco para inserir dados na tabela... qq duvida, posta ae...

 

 

<?php

 

if(isset($_FILES["arquivo"])){ // se existir arquivo

 

$arquivo = $_FILES["arquivo"];

$pasta_dir = "fotos/";//diretorio dos arquivos

if(!file_exists($pasta_dir)){ // se nao existir a pasta

mkdir($pasta_dir); // o script cria uma

}

$rand = rand (1,999999999999); // para gerar um numero aleatorio e n usar nomes repetidos

$arquivo_nome = $pasta_dir . $rand . $arquivo["name"]; //concatenando o diretorio(pasta)+numero aleat+nomarquivo

move_uploaded_file($arquivo["tmp_name"], $arquivo_nome); // move a imagem para a pasta

 

mysql_query("INSERT INTO tabela (arquivo) values ('$arquivo_nome')")or die("ERRO ENCONTRADO: '.mysql_error()");

}

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, agora está mandando o arquivo mas como no meu form não tem só upload fui mas alem;

 

<?php

include "config.php";

$nome = $_POST['nome'];
$dia = $_POST['dia'];
$hora = $_POST['hora'];
$local = $_POST['local'];
$valor = $_POST['valor'];
$cidade = $_POST['cidade'];

if(isset($_FILES["arquivo"])){ // se existir arquivo

$arquivo = $_FILES["arquivo"];
$pasta_dir = "fotos/";//diretorio dos arquivos
if(!file_exists($pasta_dir)){ // se nao existir a pasta
mkdir($pasta_dir); // o script cria uma
}
$rand = rand (1,999999999999); // para gerar um numero aleatorio e n usar nomes repetidos
$arquivo_nome = $pasta_dir . $rand . $arquivo["name"]; //concatenando o diretorio(pasta)+numero aleat+nomarquivo
move_uploaded_file($arquivo["tmp_name"], $arquivo_nome); // move a imagem para a pasta

mysql_query("INSERT INTO festas (id,foto,nome,dia,hora,local,valor,cidade) values ('','$arquivo_nome','$nome','$dia','$hora','$local','$valor','$cidade')")or die("ERRO ENCONTRADO: '.mysql_error()");
}

?>

E volta a mensagem de erro encontrado, (o arquivo é enviado) mas não cadastra no banco;

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o seu campo id for auto_increment nao precisa mandar valor para ele naum, e tem uma aspa sobrando perto do mysql_error, e ainda seu mysql_erro está dentro das aspas

 

Deixe o assim:

 

mysql_query("INSERT INTO festas (id,foto,nome,dia,hora,local,valor,cidade) values ($arquivo_nome','$nome','$dia','$hora','$local','$valor','$cidade')")or die("ERRO ENCONTRADO: ".mysql_error());

Nota: nao testei seu script aqui, entao presumo que seja o erro acima

Compartilhar este post


Link para o post
Compartilhar em outros sites

hantaro mas ai no caso, nem coloca o id como lista de campos à receberem valor.

mysql_query("INSERT INTO festas (foto,nome,dia,hora,local,valor,cidade) values ($arquivo_nome','$nome','$dia','$hora','$local','$valor','$cidade')")or die("ERRO ENCONTRADO: ".mysql_error());
Existe essa tabela: festas?

você está realmente conectado ao banco? Se voltar algum erro, coloca ele aqui para a gente.. o que aparecer depois de "ERRO ENCONTRADO".

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.