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 Alberto Nascimento
      Como consigo salvar o "novo nome" da imagem que foi enviada para o servidor por meio de UPLOAD no mesmo registro em que estão sendo salvos os dados do formulário no banco de dados através do PHP.
      Consigo salvar os campos do formulário, mas o nome que é gerado ao enviar a imagem, não estou conseguindo.
       
      <?php include 'conecta_mysql.inc'; if(isset($_FILES['arquivo']['name']) && $_FILES["arquivo"]["error"] == 0) { echo "<center>Você enviou o arquivo: <strong>" . $_FILES['arquivo']['name'] . "</strong><br /></center>"; echo "<center>Seu tamanho é: <strong>" . $_FILES['arquivo']['size'] . "</strong> Bytes<br /><br /></center>"; $arquivo_tmp = $_FILES['arquivo']['tmp_name']; $nome = $_FILES['arquivo']['name']; $extensao = strrchr($nome, '.'); $extensao = strtolower($extensao); if(strstr('.jpg;.jpeg;.gif;.png', $extensao)) { $novoNome = md5(microtime()) . '.' . $extensao; $destino = 'imagens/' . $novoNome; if( @move_uploaded_file( $arquivo_tmp, $destino )) { echo "<br>"; echo "<img src=\"" . $destino . "\" />"; echo "<br>"; } else echo "Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />"; } else echo "Você poderá enviar apenas arquivos \"*.jpg;*.jpeg;*.gif;*.png\"<br />"; } else { echo "<center><h1>Você não enviou nenhum arquivo!</h1></center>"; echo "<center><br><h3><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a></h3></center>"; } $codphoto = $_POST['codphoto']; $nome = $_POST['nome']; $datafotografia = $_POST['datafotografia']; $photography = $_POST['novoNome']; $sql = "INSERT INTO photograph VALUES"; $sql .= "( '$codphoto', '$nome', '$datafotografia', '$photography' )"; if ($conexao->query($sql) === TRUE) { echo "<center> <h2> Obrigado !! Envio realizado com sucesso !! </h2></center>"; echo "<center><br><h3><a href='LINK_SITE'>ENVIAR OUTRA FOTOGRAFIA</a></h3></center>"; } else { echo "Erro: " . $sql . "<br>" . $conexao->error; } $conexao->close();  
    • By Public2004
      Boas. Para fins de aprendizado, estou criando um tema personalizado e do zero, a ideia é não ter a dependência de nenhum plugin e entender como funciona os processos. Nesse caminho surgiu uma dúvida, explico:
      Vou cadastrar em uma determinada categoria alguns posts meio padrão tipo, titulo, corpo (texto) e escrever um resumo no campo específico.
      Só que no corpo de cada post eu vou ter um elemento específico, tipo um "embed" (apenas um em cada post).
      Tem como criar alguma função, filtro ou sei lá, que de alguma forma na listagem (loop) dos posts eu consiga capturar apenas esse elemento  específico do corpo?
      Resumindo, o que eu pretendo é criar uma página apenas dessa categoria e na listagem trazer o Título, o Resumo e esse elemento específico do corpo.
       
      Obrigado.
    • By Mkn
      Pessoal, eu estou com uma dúvida sobre como retirar o caminho do diretório do meu código fonte. Explicando melhor o meu problema: Eu estou fazendo uma página 99% concluída (em wordpress) onde tenho vídeo aulas que serão acessadas por assinantes regulares. Porém, ao acessar o código fonte o assinante tem acesso ao meu diretório, sendo assim podendo realizar o download do mesmo. Os vídeos estarão no Google Storage.
       
      O código gostaria que ficasse assim:
      data-sourcemp4="video/aulasobrepartitura.mp4"
       
      Ao invés de:
      data-sourcemp4="https://storage.googleapis.com/musiclive-com/assinantes/video/aulasobrepartitura.mp4"
       
      Fiz uma pesquisa na internet e vi que esse código no .htaccess protegeria esses objetos, porém não resolveu.
       
      RewriteCond %{HTTP_REFERER} !^https://www.meudominio.com.br$      [NC]
      RewriteCond %{HTTP_REFERER} !^$ 

      RewriteRule .*\.(jpg|jpeg|gif|png|bmp|mp4|mpeg|mpg|wma|mov|avi)$ - [F,NC]
       
      Obrigado desde já.
       
       
    • By Renan Daniel
      Seguinte Galera, Sou Iniciante, Com Muito Custo Cheguei num formulário que funciona, ele esta todo no mesmo arquivo(praticamente)
      Porém eu gostaria de saber como eu faço para inserir uma seleção de arquivo, para o cliente upar uma foto.
      Caso Alguém Queira me Ajudar Agradeço, Segue o Código : 
      <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Registrar Uma Conta</title> <link rel="stylesheet" href="style.css"/> </head> <body style="background-image: url('bg7.jpg'); background-size: cover; background-position: top center;"> <?php require('db.php'); // When form submitted, insert values into the database. if (isset($_REQUEST['username'])) { // removes backslashes $username = stripslashes($_REQUEST['username']); //escapes special characters in a string $username = mysqli_real_escape_string($con, $username); $email = stripslashes($_REQUEST['email']); $email = mysqli_real_escape_string($con, $email); $password = stripslashes($_REQUEST['password']); $password = mysqli_real_escape_string($con, $password); $numero= stripslashes($_REQUEST['numero']); $numero = mysqli_real_escape_string($con, $numero); $data_nascimento = stripslashes($_REQUEST['data_nascimento']); $data_nascimento = mysqli_real_escape_string($con, $data_nascimento); $cpf = stripslashes($_REQUEST['cpf']); $cpf = mysqli_real_escape_string($con, $cpf); $rg = stripslashes($_REQUEST['rg']); $rg = mysqli_real_escape_string($con, $rg); $endereco_principal = stripslashes($_REQUEST['endereco_principal']); $endereco_principal = mysqli_real_escape_string($con, $endereco_principal); $banco_principal = stripslashes($_REQUEST['banco_principal']); $banco_principal = mysqli_real_escape_string($con, $banco_principal); $agencia_principal = stripslashes($_REQUEST['agencia_principal']); $agencia_principal = mysqli_real_escape_string($con, $agencia_principal); $ope_principal = stripslashes($_REQUEST['ope_principal']); $ope_principal = mysqli_real_escape_string($con, $ope_principal); $conta_principal = stripslashes($_REQUEST['conta_principal']); $conta_principal = mysqli_real_escape_string($con, $conta_principal); $nome_terceiro = stripslashes($_REQUEST['nome_terceiro']); $nome_terceiro = mysqli_real_escape_string($con, $nome_terceiro); $cpf_terceiro = stripslashes($_REQUEST['cpf_terceiro']); $cpf_terceiro = mysqli_real_escape_string($con, $cpf_terceiro); $agencia_terceiro = stripslashes($_REQUEST['agencia_terceiro']); $agencia_terceiro = mysqli_real_escape_string($con, $agencia_terceiro); $ope_terceiro = stripslashes($_REQUEST['ope_terceiro']); $ope_terceiro = mysqli_real_escape_string($con, $ope_terceiro); $conta_terceiro = stripslashes($_REQUEST['conta_terceiro']); $conta_terceiro = mysqli_real_escape_string($con, $conta_terceiro); $create_datetime = date("Y-m-d H:i:s"); $query = "INSERT into `users3` (username, password, email, numero, data_nascimento, cpf, rg, endereco_principal, banco_principal, agencia_principal, ope_principal, conta_principal, nome_terceiro, cpf_terceiro, agencia_terceiro, ope_terceiro, conta_terceiro, create_datetime) VALUES ('$username', '$password', '$email', '$numero', '$data_nascimento', '$cpf', '$rg', '$endereco_principal', '$banco_principal', '$agencia_principal', '$ope_principal', '$conta_principal', '$nome_terceiro', '$cpf_terceiro', '$agencia_terceiro', '$ope_terceiro', '$conta_terceiro','$create_datetime')"; $result = mysqli_query($con, $query); if ($result) { echo "<div class='form'> <h3>Você Foi Registrado com Sucesso.</h3><br/> <p class='link'><a href='#'>Login</a></p> </div>"; } else { echo "<div class='form'> <h3>Você Preencheu Dados Errados</h3><br/> <p class='link'>Volara Para <a href='index.php'>Tentar Novamente</a> Agora.</p> </div>"; } } else { ?> <form class="form" action="" method="post" enctype="multipart/form-data"> <center><img src="1.PNG" style=" width: 250px; "></center> <h1 class="login-title">Dados Pessoais</h1> <h3>Seus Dados São Protegidos.</h3> <input type="text" class="login-input" name="username" placeholder="Nome Completo" required /> <input type="text" class="login-input" name="email" placeholder="Seu Email"> <input type="password" class="login-input" name="password" placeholder="Sua Senha"> <input type="text" class="login-input" name="numero" placeholder="N° de Telefone"> <input type="text" class="login-input" name="data_nascimento" placeholder="Sua Data de Nascimento" required /> <input type="text" class="login-input" name="cpf" placeholder="Seu Cpf" required /> <input type="text" class="login-input" name="rg" placeholder="Seu Rg"required /> <input type="text" class="login-input" name="endereco_principal" placeholder="Seu Endereço"required /> <h1 class="login-title">Seus Dados Bancários</h1> <input type="text" class="login-input" name="banco_principal" placeholder="Nome do Seu Banco"required /> <input type="text" class="login-input" name="agencia_principal" placeholder="Nº Da Agência"required /> <input type="text" class="login-input" name="ope_principal" placeholder="Nº da Operação"required /> <input type="text" class="login-input" name="conta_principal" placeholder="Nº da Conta"required /> <h1 class="login-title">Dados Bancários de Terceiro</h1> <h3>Caso Queira Receber os Redimentos em Nome de Terceiros ( Mãe, Esposa, Filhos..)Deve Cadastrar a Conta Abaixo, e Deve Anexar Um Documento Reconhecido em Cartório Autorizando.</h3> <input type="text" class="login-input" name="nome_terceiro" placeholder="Nome do Titular"required /> <input type="text" class="login-input" name="agencia_terceiro" placeholder="Nº Da Agência"required /> <input type="text" class="login-input" name="ope_terceiro" placeholder="Nº Da Operação"required /> <input type="text" class="login-input" name="conta_terceiro" placeholder="Nº Da Conta"required /> <center><h3>Carregue a Autorização</h3></center> <input type="file" class="login-input" name="arquivo" placeholder="Carregar Autotização"required /> <input type="submit" name="submit" value="REGISTRAR" class="login-button"> <center style=" padding-top: 10px; "><a class="login-button" href="">Voltar Para o Inicio</a></center> </form> <?php } ?> </body> </html> Agradeço desde já a ajuda.
    • By ilbett
      Boa noite prezados.
       
      Estou com um problema há alguns dias. Espero que um de vocês tenha uma luz para ele haha.
       
      Estou fazendo uma integração entre a loja de um cliente hospedada na NuvemShop e a automatizadora de marketing RD Station.
      Através do Postman eu faço um GET da NuvemShop e um POST dos dados pegos da NuvemShop para a RD Station.
      O Problema, nesse caso, é que eles nomeiam as strings de formas diferentes.
       
      Vocês conhecem algum intermediador que receba esse POST com os dados da NuvemShop e traduza, por exemplo, "costumer.name" para "name" e envie para a RD?
      Ou algum script que eu possa rodar no Postman para fazer essas "traduções" das strings?
       
      Desde já, muito obrigado!
×

Important Information

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