TrymBeast 0 Denunciar post Postado Janeiro 16, 2005 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
hinom 5 Denunciar post Postado Janeiro 16, 2005 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
TrymBeast 0 Denunciar post Postado Janeiro 16, 2005 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
TrymBeast 0 Denunciar post Postado Janeiro 16, 2005 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 1468Se 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
hinom 5 Denunciar post Postado Janeiro 17, 2005 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
TrymBeast 0 Denunciar post Postado Janeiro 17, 2005 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
TrymBeast 0 Denunciar post Postado Janeiro 17, 2005 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