Ir para conteúdo
Fórum Script Brasil
  • 0

Upload Dando Erro


TrymBeast

Pergunta

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

<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="javascript: redirect('<?=nome_ficheiro()?>?admin=listar_biografias')">
    </td>
   </tr>
  </table>
  </form>
Código de Upload antecipado pela listagem das variáveis passadas pelo método POST
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'] . "')";
  }

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

cara um dos erros:

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

tenta colocar o "$" aqui:

="<?=$nome_ficheiro()?>?

Link para o comentário
Compartilhar em outros sites

  • 0
cara um dos erros:

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

tenta colocar o "$" aqui:

="<?=$nome_ficheiro()?>?

Neste caso você não está certo porque nome_ficheiro() é uma função que criei para retornar o nome do ficheiro. E como sendo uma função não se põe o $.

Mas obrigado na mesma.

Quem me descobre o erro??

Link para o comentário
Compartilhar em outros sites

  • 0
A imagem não tá sendo enviada ou cadastrada no banco? Não retornar erro de linha?

Retorna erro dizendo que não consegue abri-la.

Ou seja, não faz o upload, ou então o move_uploaded_file() não está funcionando bem.

Mas acontece que por exemplo, se eu tentar adicionar a mesma imagem duas vezes, à segunda vez já funciona.

Link para o comentário
Compartilhar em outros sites

  • 0

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 1466

Warning: filesize(): Stat failed for bandeira_portugal.jpg (errno=2 - No such file or directory) in F:\Lvpercalia\Pagina\admin.php on line 1466

Warning: fread(): supplied argument is not a valid stream resource in F:\Lvpercalia\Pagina\admin.php on line 1466

Warning: 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.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...