Ir para conteúdo

Arquivado

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

xRafaah

Upload de arquivo escolhendo pasta via "post"

Recommended Posts

Boa tarde,

Estou precisando de uma ajuda, pois sou iniciante ainda em php. Seguinte:

Tenho um código funcionando normalmente, ele envia o arquivo direitinho e tal. Porém, ele envia para uma pasta especifica que eu coloco o nome direto no código, mas eu preciso enviar cada arquivo para uma pasta diferente já criada no servidor.

 

Então, eu queria fazer assim: digitar o nome da pasta (que já está criada no server) em um campo input text, selecionar o arquivo normalmente e enviar. Assim cada um iria para pasta correta.

Como posso fazer isso?

Segue o código:

 

O formulário já está criado tbm

<form method="post" action="upload2.php" enctype="multipart/form-data">
   <input type="text" name="posto" id="posto">
   <input type="file" name="arquivo" />
            
   <br> 
   <input name="enviar" type="submit"   class="botao" value="Enviar" />
</form>
<?php 
     
     $posto = $post["posto"];
	 $uploaddir = '$posto/';
  
     $uploadfile = $uploaddir . $_FILES['arquivo']['name'];
  
     if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)){
  
     echo "Arquivo Enviado";}
  
     else {echo "Houve um problema no upload do arquivo.";}
  
?>

 

Abraço o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual erro está dando? Parece que está tudo certo, eu faria algumas modificações:

 

<?php 
     
     $posto = $_REQUEST["posto"];
	 $uploaddir = $posto . '/';
  
     $uploadfile = $uploaddir . $_FILES['arquivo']['name'];
  
     if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)){
  
     echo "Arquivo Enviado";}
  
     else {echo "Houve um problema no upload do arquivo.";}
  
?>

 

Outra coisa, se você está inserindo arquivos para que só quem esteja logado veja, isso não é uma boa forma, você teria que colocar os arquivos em pastas internas do servidor, assim, só quem você permitisse acessaria os arquivos.

 

Nesse momento estou programando um sistema com login, e nele tem opções de download, upload e só quem está logado consegue baixar.

 

Caso tenha interesse, pode baixa-lo: 

 

https://github.com/juliossena/eLearning

 

Qualquer dúvida só chamar, o Reade-me tem os códigos do banco de dados mysql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, muito obrigado amigo, vou dar uma olhada no seu código sim.

 

O erro que da é esse:

Warning: move_uploaded_file($posto/Envelope V.jpg): failed to open stream: No such file or directory in /home/ambientalsi/public_html/central/upload2.php on line 15

Warning: move_uploaded_file(): Unable to move '/tmp/phpwx1CPc' to '$posto/Envelope V.jpg' in /home/ambientalsi/public_html/central/upload2.php on line 15
Houve um problema no upload do arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

As aspas simples não são interpretadas pelo PHP. Elas são processadas de forma crua. Ou seja:

$uploaddir = '$posto/';

Se você notar no seu erro, ele está literalmente escrevendo $posto/, enquanto você queria o valor interpretado dessa variável.

Para isso você deveria fazer algo assim:

$uploaddir = $posto . '/'; // concatenação de strings

$uploaddir = "{$posto}/"; // uso de aspas duplas

Veja mais sobre Strings no manual: https://secure.php.net/manual/pt_BR/language.types.string.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigo,

 

Coloquei da seguinte forma:

 

 

<?php 

   $posto = $_post["posto"];
  
   $uploaddir = $posto . '/'; // concatenação de strings
   $uploaddir = "{$posto}/"; // uso de aspas duplas
  
     $uploadfile = $uploaddir . $_FILES['arquivo']['name'];
  
     if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)){
  
     echo "Arquivo Enviado";}
  
     else {echo "Houve um problema no upload do arquivo.";} 
?>

Deu o seguinte erro:

Warning: move_uploaded_file(/CartaoAmbF2.jpg): failed to open stream: Permission denied in /home/ambientalsi/public_html/central/upload2.php on line 14

Warning: move_uploaded_file(): Unable to move '/tmp/phpWF8jaU' to '/CartaoAmbF2.jpg' in /home/ambientalsi/public_html/central/upload2.php on line 14
Houve um problema no upload do arquivo.

 

 

Caso o erro esteja muito óbvio, me desculpe a ignorância ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem permissão para subir o arquivo para a pasta, se estiver usando linux, lembre de dar permissão total na pasta que está tentando subir.

 

Fiz o teste aqui no código e funcionou.

 

<?php 
     
     $posto = $_REQUEST["posto"];
	 $uploaddir = $posto . '/';
  
     $uploadfile = $uploaddir . $_FILES['arquivo']['name'];
  
     if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)){
  
     echo "Arquivo Enviado";}
  
     else {echo "Houve um problema no upload do arquivo.";}
  
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opaa!

Agora deu certoo.

Muito obrigado Julio, Matheus.

 

Valeu mesmo galera!

 

Código funcionando:

<?php 

   $posto = $_REQUEST["posto"];
	 $uploaddir = $posto . '/';
  
     $uploadfile = $uploaddir . $_FILES['arquivo']['name'];
  
     if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)){
  
     echo "Arquivo Enviado";}
  
     else {echo "Houve um problema no upload do arquivo.";}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por AlexandreHenrique
      Olá pessoal. preciso de uma ajuda com o meu projeto de upload.
      O projeto de upload roda no IIS + Php;
      Tenho um script que ta enviando  o arquivo para o diretório correto.
      O problema é que ao tentar acessar esse arquivo via URL, o anexo não abre  e exibe a mensagem abaixo.
       

      Notei que o arquivo ao cair no DIR, ele entra sem permissões (vi em propriedades), se eu editar o mesmo alterando as permissões, ele carrega pela url do meu site.
      Quero que o arquivo enviado pelo script caia no DIR correta com as devidas permissões pra eu poder ler no navegador via URL;
       
      Já tentei resolver de toda forma mas nao tive sucesso;.
      No Apache isso é mais simples, mas no IIS ta complicado;
       
       
       
      Alguem pode me dá uma dica?
    • Por FabianoSouza
      Gente, por padrão, arquivos que estiverem contidos na pasta App_Data não podem ser exibidos diretamente pelo navegador, certo?
      Isso é bom por exemplo, se eu quiser guardar fotos de funcionários lá, as mesmas não poderão ser chamadas diretamente pelo seu caminho.
       
      Então faço a pergunta. Como faço uso dos arquivos lá existentes?
      Em termos mais práticos, como eu poderia exibir as imagens pela aplicação??
       
      Senão fico com a seguinte dúvida: pra que ter imagens na pasta App_Data se não tenho como utilizá-las?
       
      Dúvida de gente inexperiente, tá? rsrsrs
       
      Valew
    • Por Caio Vargas
      Fala pessoa tudo tranquilo ?
      estou com um problema eu fiz um sistema de upload onde tem a marca dagua  o problema e que quando o cadastro da capa e pequena a imagem da marca dagua fica grande
      e qauando a capa e grande  a imagem da marca dagua fica pequena alguem poderia me ajudar 
    • Por mateus.andriollo
      Olá,
      Gostaria de saber se alguem pode me ajudar.
      Meu PHP esta na pasta public_html em um CPanel, quero saber se é possível armazenar em pasta fora da pasta  pública, por segurança mesmo...
      Faço isso em ASP, ai chamo a imagem por um fso, funciona mas queria saber se tem como no PHP.
    • Por DeniseAlencar
      Boar tarde pessoal estou fazendo um teste com upload de imagens gravando no banco de dados porem quando cadastro uma imagem com o nome "foto.jpg" e depois cadastro a mesma imagem com o mesmo nome, no banco de dados aparece dois registros com nomes iguais mas gostaria que os nomes fossem diferentes.
       
      E na pasta arquivos aparece uma unica imagem gostaria que quando cadastrasse fotos iguais o nome mudasse tipo foto.jpg , foto2.jpg  etc (isso automaticamente) vou postar o codigo .
      <?php $diretorio = "arquivos/"; if(!is_dir($diretorio)){ echo "Pasta $diretorio não existe";}else{ $arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; for ($controle = 0; $controle < count($arquivo['name']); $controle++){ $destino = $diretorio."/".$arquivo['name'][$controle]; $nome_foto = $arquivo['name'][$controle]; if(move_uploaded_file($arquivo['tmp_name'][$controle], $destino)){ $sql="INSERT INTO galeria (arquivo) VALUES ('$nome_foto')"; $qry = mysqli_query($conexao,$sql); echo "<head><meta HTTP-EQUIV='refresh' CONTENT='0;URL=index.php'></head>"; }else{ echo "Erro ao realizar upload"; } } } ?>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.