Ir para conteúdo

Arquivado

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

TrymBeast

Upload dando erro

Recommended Posts

Olá!

 

Eu tinha um código de upload de ficheiros funcionando, mas não está funcionando mais não sei porquê.

 

Mas o que eu sei é que a variável do formulário do tipo ficheiro não está sendo passada como deve ser. O campo chama-se txtFoto, e se por código PHP tentar aceder ao conteúdo desse campo dá-me sempre erro porque a variável não está definida, então o que pensei?Fiz um código para me mostrar todas as variáveis que estão sendo passadas pelo formulário, e aparecem-me lá todos os campos menos aquele, se eu tirar o enctype="multipart/form-data" do formulário, o campo já aparece, mas como é óbvio assim não dá para fazer o upload.

 

Código do Formulário

PHP [/tr][tr]

<form action="<?=nome_ficheiro()?>?admin=adicionar_biografia_bd" method="post" enctype="multipart/form-data">

<table class="form">

<tr>

<td>

<center>

<table class="dados">

<tr>

<td>Ano:</td>

<td>

<select name="lstAno">

<?

for($i = 2004; $i <= data("Y"); $i++) {

if($i == data("Y")) echo "<option selected>" . $i . "</option>";

else echo "<option>" . $i . "</option>";

}

?>

</select>

</td>

</tr>

<tr>

<td>Titulo:</td>

<td><input type="text" name="txtTitulo" size="40"></td>

</tr>

<tr>

<td>Biografia:</td>

<td><textarea name="txtBiografia" cols="30" rows="5"></textarea></td>

</tr>

<tr>

<td>Foto:</td>

<td><input name="txtFoto" type="file" size="40"></td>

</tr>

<tr>

<td>Língua:</td>

<td>

<select name="lstLingua">

<?

languages('input');

?>

</select>

</td>

</tr>

</table>

</center>

<br>

<input name="cmdAdicionar" type="submit" value="Adicionar">

<input name="cmdCancelar" type="button" value="Cancelar" onClick="java script: redirect('<?=nome_ficheiro()?>?admin=listar_biografias')">

</td>

</tr>

</table>

</form>

[/tr]

Código de Upload antecipado pela listagem das variáveis passadas pelo método POST

PHP [/tr][tr]

foreach ($_POST as $chave => $i) echo $chave;

 

if(!empty($_FILES['txtFoto']['name'])) {

@move_uploaded_file($_FILES['txtFoto']['tmp_name'], $_FILES['txtFoto']['name']) or mostrar_erro("Não foi possível copiar a foto");

//Abre a imagem e copia o conteúdo para uma variável

$conteudoImagem = addslashes(fread(fopen($_FILES['txtFoto']['name'], "r"), filesize($_FILES['txtFoto']['name'])));

//Apagar foto do servidor

unlink($_FILES['txtFoto']['name']);

$SQL = "INSERT INTO " . DB_TABELA_BIOGRAFIAS . " (ano,titulo,biografia,foto,lingua) VALUES ('" . $_POST['lstAno] . "','" . $_POST['txtTitulo] . "','" . $_POST['txtBiografia] . "','" . $conteudoImagem . "','" . $_POST['lstLingua] . "')";

}

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro é porque você está lendo o nome do arquivo.

você deveria ler o arquivo em si

 

"tmp_name"

 

 

ficaria assim:

 

$conteudoImagem = addslashes(fread(fopen($_FILES['txtFoto']['tmp_name], "r"), filesize($_FILES['txtFoto']['tmp_name])));

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro é porque você está lendo o nome do arquivo.

você deveria ler o arquivo em si

 

"tmp_name"

 

 

ficaria assim:

 

$conteudoImagem = addslashes(fread(fopen($_FILES['txtFoto']['tmp_name], "r"), filesize($_FILES['txtFoto']['tmp_name])));

Pois, mas eu usei o seguinte código para mudar o nome do ficheiro.

PHP [/tr][tr] @move_uploaded_file($_FILES['txtFoto']['tmp_name'], $_FILES['txtFoto']['name']) or mostrar_erro("Não foi possível copiar a foto");[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei agora se faz bem upload e faz o upload, porque a imagem aparece na pasta, mas dá erro para tentar abri-la.Dá-me o seguinte erro:

Warning: fopen(bandeira_portugal.jpg): failed to open stream: No such file or directory in F:\Lvpercalia\Pagina\admin.php on line 1466Warning: filesize(): Stat failed for bandeira_portugal.jpg (errno=2 - No such file or directory) in F:\Lvpercalia\Pagina\admin.php on line 1466Warning: fread(): supplied argument is not a valid stream resource in F:\Lvpercalia\Pagina\admin.php on line 1466Warning: unlink(bandeira_portugal.jpg): No such file or directory in F:\Lvpercalia\Pagina\admin.php on line 1468

Se repararem bem, está a tentar abrir naquela pasta, mas o upload com o código que forneci em cima está a ser feito para a pasta do PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que vocÊ não entendeuo upload está okmas o problema é a forma como você está tentando ler o arquivodo modo como está você está tentando abrir um arquivo cujo caminho é inválidoporque foi especificado o nome e não o caminho.poderia até abrir se estivesse no mesmo diretório do arquivo (ficheiro) de uploado correto é utilizar o tmp_name como já mencionei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que vocÊ não entendeuo upload está okmas o problema é a forma como você está tentando ler o arquivodo modo como está você está tentando abrir um arquivo cujo caminho é inválidoporque foi especificado o nome e não o caminho.poderia até abrir se estivesse no mesmo diretório do arquivo (ficheiro) de uploado correto é utilizar o tmp_name como já mencionei.

okvou tentar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já resolvi o problema.

Esqueci-me de usar uma função criada por mim, que usei umas linhas mais abaixo e agora já funciona bem. Tinha que por a funcao sempre antes do código.

$_FILES[qualquer]['name']

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.