Jump to content
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/

Share this post


Link to post
Share on other 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.

  • Gostei 1

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 ^^

Share this post


Link to post
Share on other 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.";}
  
?>

 

Share this post


Link to post
Share on other 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.";}
?>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By jmggames
      boa noite, estou com um script de upload de imagens, que após fazer o upload, ele finaliza com uma miniatura da imagem que acabou de ser enviada.
      porem alem de mostrar a miniatura da imagem, eu gostaria que mostrasse também um link gerado do upload da imagem, para que a pessoa que fez o upload, pegue o link e guarde para poder chegar ate a imagem futuramente.
      eu gostaria que o link fosse gerado logo após a mensagem "imagem enviada com sucesso!"  alguém pode me ajudar?
      script do site:
       
      <html>
      <head>
       <title>Upload de imagens</title>
       <meta charset="utf-8">
       <meta name="viewport" content="width=device-width, initial-scale=1">
       <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
       <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
       <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
      </head>
      <body>
      <div class="container">
      <h2><strong>Envio de imagens</strong></h2><hr>
      <form method="POST" enctype="multipart/form-data">
        <label for="conteudo">Enviar imagem:</label>
        <input type="file" name="pic" accept="image/*" class="form-control">
        <div align="center">
          <button type="submit" class="btn btn-success">Enviar imagem</button>
        </div>
      </form>
       
       <hr>
       
       <?php
       if(isset($_FILES['pic']))
       {
          $ext = strtolower(substr($_FILES['pic']['name'],-4)); //Pegando extensão do arquivo
          $new_name = date("Y.m.d-H.i.s") . $ext; //Definindo um novo nome para o arquivo
          $dir = './imagens/'; //Diretório para uploads
       
          move_uploaded_file($_FILES['pic']['tmp_name'], $dir.$new_name); //Fazer upload do arquivo
          echo '<div class="alert alert-success" role="alert" align="center">
                <img src="./imagens/' . $new_name . '" class="img img-responsive img-thumbnail" width="200"> 
                <br>
                Imagem enviada com sucesso!
                <br>
                <a href="exemplo_upload_de_imagens.php">
                <button class="btn btn-default">Enviar nova imagem</button>
                </a></div>';
       } ?>
      </div>
      <body>
      </html>
       

    • By jmggames
      bom dia, eu tinha uns anos atras um script de upload de imagens que depois de fazer o envio do upload, ele gerava um link para a pessoa ter acesso a essa imagem, como em um site de upload normal, porem eu acabei perdendo o script, e por ter anos, acho que a pagina onde estava não existe mais.
      gostaria de saber se alguém pode me ajudar com esse script.
    • By Andersonografia
      Gostaria de agradecer o topico do Tonga (topic/436039-resolvido refresh/) pois me esclareceu a criar um método prático para certificar se o form vem do botão ou do F5.
      Vou esclarecer também que só tenho essa necessidade quando o primeiro form do documento é um input, porque na maioria dos meus casos sempre é um search.  
       
      No Value do botão eu coloco o time:
      <button type="submit" name="carga" class="button" value="<?PHP echo $time;?>"> Coloco a condição se estiver setado e se for diferente da sessão:
      if(isset($_POST['carga'])) { $compara = ($_POST['carga']); if($compara != $_SESSION['compara']) { E depois do insert, ainda dentro da condição eu gravo a variável na sessão:
      $_SESSION['compara'] = $compara; Obrigado mais uma vez ao Tonga e ao Forum. Se alguém souber de um método mais prático, por gentileza será muito útil divulgar!!!!
    • By Gustavo2503
      Eu preciso de um link para abrir um arquivo em decodificado em base64, eu fiz o link mas quando eu abro o link ele não aparece nada, o título da página fica "Sem título" e a página fica branca, vazia. E quando eu clico na URL e dou ENTER, ele aparece o meu arquivo normal. O link está assim:
      <a target="_blank" href="data:application/pdf;base64,MEU_ARQUIVO_BASE64">Arquivo</a> Como arrumar isso?
    • By wanderleyalves
      Olá, estou começando a aprender o php e quero muito saber como busco um arquivo pdf em um diretório usando o login que e o cpf como texto para busca, ja fiz a tela de login, o formulario de busca  e o mostra resultado em php usando a função glob http://php.net/manual/pt_BR/function.glob.php, que encontra qualquer arquivo com o nome que escrever no campo busca, porem gostaria que ao logar já mostrasse o arquivo daquele usuário sem ter que buscar por ele, se o usuário buscar por 1, mostra todos os arquivos que contem 1 no nome.
       
      exemplo:
      Login do usuario 1 CPF:11111111111 senha ******
      Diretório: /arquivos/ 11111111111.pdf
       
      Login do usuario 2 CPF:22222222222 senha ******
      Diretório: /arquivos/22222222222.pdf
       
      mostra_busca.php
      <?php $arquivo = $_POST['arquivo']; $nome = "$arquivo"; $dir = 'cedulas/'; $arquivos_pattern = glob($dir . $nome . "*.*"); $i = 0; if($arquivos_pattern !== false) { foreach($arquivos_pattern as $arquivo) { echo "<a href=\"".$arquivo."\">" . basename($arquivo) . "</a><br />"; $i++; } echo $i > 0 ? "<br>" : NULL; } echo $nome_user; echo ", foram encontrados <strong>".$i."</strong> registros clique no link para imprimir"; ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.