Ir para conteúdo

POWERED BY:

Arquivado

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

calintro

Erro em sistema de upload de imagem

Recommended Posts

<?phpinclude 'inc/config.php';include 'inc/conn.php';if(isset($_FILES["arquivo"])) {$arquivo = $_FILES["arquivo"];$pasta_dir = "imagens/";$tipo = explode(".", $arquivo['name']);if (!file_exists($pasta_dir)) {mkdir($pasta_dir);}if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {	echo "Formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png.";}else {$arquivo_nome = $pasta_dir . md5(date("d/m/Y H:i:s") . $arquivo['name']) . "." .$tipo[1];move_uploaded_file($arquivo['tmp_name'], $arquivo_nome);mysql_query("INSERT INTO fotos VALUES ('', '$arquivo_nome')");mysql_close($cn); }}elseif (isset($_POST['link'])) {$link = $_POST['link'];mysql_query("INSERT INTO fotos VALUES('', '$link')");mysql_close($cn);}?>

 

 

 

 

O problema é o seguinte: O sistema tenta analisar o campo $_FILES['arquivo'] mesmo que eu o deixe em branco e só preencha o outro campo($_POST['link']), que é o qual o usuário envia uma imagem de outro servidor através de um link. Quando eu coloco no formulário apenas o campo de imagem remota, acontece o seguinte erro: Formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. - Como se eu estivesse tentando passar algo através do campo de $_FILES['arquivo'].

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?phpinclude 'inc/config.php';include 'inc/conn.php';if(isset($_FILES["arquivo"])) {$arquivo = $_FILES["arquivo"];$pasta_dir = "imagens/";$tipo = explode(".", $arquivo['name']);if (!file_exists($pasta_dir)) {mkdir($pasta_dir);}if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {	echo "Formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png.";}else {$arquivo_nome = $pasta_dir . md5(date("d/m/Y H:i:s") . $arquivo['name']) . "." .$tipo[1];move_uploaded_file($arquivo['tmp_name'], $arquivo_nome);mysql_query("INSERT INTO fotos VALUES ('', '$arquivo_nome')");mysql_close($cn); }}elseif (isset($_POST['link'])) {$link = $_POST['link'];mysql_query("INSERT INTO fotos VALUES('', '$link')");mysql_close($cn);}?>

 

 

 

 

O problema é o seguinte: O sistema tenta analisar o campo $_FILES['arquivo'] mesmo que eu o deixe em branco e só preencha o outro campo($_POST['link']), que é o qual o usuário envia uma imagem de outro servidor através de um link. Quando eu coloco no formulário apenas o campo de imagem remota, acontece o seguinte erro: Formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. - Como se eu estivesse tentando passar algo através do campo de $_FILES['arquivo'].

não sei se entendi bem, mas tenta testar se o campo file está vazio:

 

 

if(isset($_FILES["arquivo"]) && !empty($_FILES["arquivo"])) {

 

tenta aí e dá o retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também não deu. :(

Faz o seguinte aonde você recebe o file:echo('<pre>');print_r($arquivo);echo('</pre>'); e veja o que está sendo passado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também não deu. :(

Faz o seguinte aonde você recebe o file:echo('<pre>');print_r($arquivo);echo('</pre>'); e veja o que está sendo passado
Quando eu preencho o campo file ele passa o arquivo certinho, sem erro algum. Quando eu preencho só o campo de imagem remota ele não passa nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente trocar o elseif por somente if.[]'s

Ele da o erro, mas o link vai pro BD. (No caso da imagem remota)Se eu tento usar o campo de files, acontece o seguinte erro:Warning: mysql_query(): Acesso negado para o usuário 'ODBC'@'localhost' (senha usada: NÃO) in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 40Warning: mysql_query(): A link to the server could not be established in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 40Warning: mysql_close(): 5 is not a valid MySQL-Link resource in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 41

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente trocar o elseif por somente if.[]'s

Ele da o erro, mas o link vai pro BD. (No caso da imagem remota)Se eu tento usar o campo de files, acontece o seguinte erro:Warning: mysql_query(): Acesso negado para o usuário 'ODBC'@'localhost' (senha usada: NÃO) in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 40Warning: mysql_query(): A link to the server could not be established in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 40Warning: mysql_close(): 5 is not a valid MySQL-Link resource in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 41
coloca assim no seu cod pra ver o erro:mysql_query("INSERT INTO fotos VALUES ('', '$arquivo_nome')") or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: mysql_query(): Acesso negado para o usuário 'ODBC'@'localhost' (senha usada: NÃO) in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 40Warning: mysql_query(): A link to the server could not be established in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 40Acesso negado para o usuário 'ODBC'@'localhost' (senha usada: NÃO)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas só aparece esse erro do DB quando eu boto "if" no lugar de "ifelse" no campo de $_POST.

 

Mas, em todo caso:

 

<?php$cn = mysql_connect("localhost","root");mysql_select_db("teste",$cn);?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: mysql_query(): Acesso negado para o usuário 'ODBC'@'localhost' (senha usada: NÃO) in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 40Warning: mysql_query(): A link to the server could not be established in c:\arquivos de programas\php\www\scripts\galeria\upload.php on line 40Acesso negado para o usuário 'ODBC'@'localhost' (senha usada: NÃO):sad:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não esquece de conferir o enctype do formulário que envia os dados

 

enctype="multipart/form-data"

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta nem que seja:

 

<?php$nome_arquivo = $_FILES[arquivo][name];if ($nome_arquivo != "") {} else {}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta nem que seja:

<?php$nome_arquivo = $_FILES[arquivo][name];if ($nome_arquivo != "") {} else {}?>
Deu na mesma que o começo do tópico. :(Não sei o que fazer :/Acho que o erro está em algum {}(), mas não sei exatamente qual, nem porque.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Revirei os meus DVDs de backup de clientes e achei algo igual aqui e que na época funcionou (isso uns dois anos atras hehe)

 

// Prepara a variável do arquivo$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;// Formulário postado... executa as açõesif ($arquivo) {  	// Verifica se o mime-type do arquivo é de imagem	if (!eregi("^image\/(pjpeg|jpeg)$", $arquivo["type"])) {		$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg.";	} else {		}}

Se tu achar que falta algum {} faz a identação do código e tira a prova

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.