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 Alex Dias
      Amigos, estou com uma grande dificuldade com UPLOAD de arquivos PDF´S , o servidor informa que o upload permitido lá é de 64MB o arquivo que envio é de 54MB, no meu script está configurado sem limites de tamanho do arquivo.

                                      maxsize:           0, // maximum file size in bytes (0 = any size)

      A empresa informa que é recomendação do CPANEL manter o limite máximo de 64MB, porém eles fizeram uma manobra de criar o arquivo .htaccess, segue o email que recebi da empresa:
       
      Para não alterar a configuração padrão recomendada pelo suporte do cPanel, subimos para a conta um arquivo .htaccess com a configuração abaixo. Veja se funcionou por favor.
      php_value memory_limit 128M
      php_value upload_max_filesize 64M
      php_value post_max_size 64M

      Porém isso não está resolvendo.

      Alguém poderia me ajudar com alguma opinião do que posso fazer?

      Desde já agradeço a ajuda dos amigos do Fórum.
    • By asacap1000
      Galera estou com uma dúvida, tenho a parte de envio de dados para em Post, com encode json e curl. Já pesquisei em todos os lugares e não encontrei nada pra clarear as idéias.
       
      a parte final é essa do envio (cliente)
      header("Content-Type: ".$mediaType); $headers = array(); $headers[] = "Accept: ".$mediaType; $headers[] = "Accept-Charset: ".$charSet; $headers[] = "Accept-Encoding: ".$mediaType; $headers[] = "Content-Type: ".$mediaType.";charset=".$charSet; $headers[] = "Authorization: Basic ".$AuthorizationHeaderBase64; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"contatos=$contatos"); #campos que serão enviados curl_setopt($ch, CURLOPT_USERPWD, $AuthorizationHeaderBase64); curl_setopt($ch, CURLOPT_HEADER, $headers); curl_setopt($ch, CURLINFO_HTTP_CODE, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);#ativa se for ter retorno do chamada $result = curl_exec($ch); $result2 = json_decode($result,true); curl_close($ch); if($result2 === false) { $err = 'Curl error: ' . curl_error($ch); $result2 = $err; echo "This is text".$err; } var_dump ($result2);  
      Preciso de ajuda para entender como deve ser feito a página que será chamada, no caso lado servidor.
       
      Como pode ver tenho um header configurado e será enviado com chave de autorização agora como isso é feito do lado servidor??
       
      Se alguém puder me ajudar, preciso entregar este webservice sexta feira 18/10. Todos os dados recebidos serão salvos no BD Oracle.
       
       
    • By marcossantana10
      Opa, to precisando muito de uma ajuda: estou tentando fazer o upload de arquivos de um app hibrido (rodando android) para um servidor. O código abaixo é executado sem erro, mas o upload não acontece. Será que alguem tem ideia de onde pode estar o erro?
       
      var images = []; var $imagesDiv; document.addEventListener("deviceready", init, false); function init() { $("#addPicture").on("touchend", selPic); $imagesDiv = $("#images"); $("#uploadPictures").on("touchend", uploadPics); } function selPic() { navigator.camera.getPicture(function(f) { var newHtml = "<img src='"+f+"'>"; $imagesDiv.append(newHtml); images.push(f); if(images.length === 1) { $("#uploadPictures").removeAttr("disabled"); } }, function(e) { alert("Error, check console."); console.dir(e); }, { quality: 50, sourceType: Camera.PictureSourceType.PHOTOLIBRARY, destinationType: Camera.DestinationType.FILE_URI }); } function uploadPics() { alert("Ok, going to upload "+images.length+" images."); var defs = []; var fd = new FormData(); images.forEach(function(i) { alert('processing '+i); var def = $.Deferred(); window.resolveLocalFileSystemURL(i, function(fileEntry) { alert('got a file entry'); fileEntry.file(function(file) { alert('now i have a file ob'); console.dir(file); var reader = new FileReader(); reader.onloadend = function(e) { var imgBlob = new Blob([this.result], { type:file.type}); fd.append('file'+(images.indexOf(i)+1), imgBlob); fd.append('fileName'+(images.indexOf(i)+1), file.name); def.resolve(); }; reader.readAsArrayBuffer(file); }, function(e) { alert('error getting file', e); }); }, function(e) { alert('Error resolving fs url', e); }); defs.push(def.promise()); }); $.when.apply($, defs).then(function() { alert("all things done"); var request = new XMLHttpRequest(); request.open('POST', 'url', true); request.send(fd); }); } Do lado do servidor, onde eu deveria receber a requisição e upar os arquivos, está conforme código abaixo:
      <?php header("Access-Control-Allow-Origin: *"); $imgFileName=date("Y").date("m").date("j")."_".$_POST['index']."_".rand(1000,9999).".jpg"; if(move_uploaded_file($_FILES['file']['tmp_name'], "anuncios/".$imgFileName)){ echo "upload ok"; //or anything you need } ?>  
    • By groudon900
      Preciso da ajuda de vocês eu consigo apagar o caminho da foto no banco de dados, mas não consigo apagar a foto da pasta !
       
      como ela fica salva na coluna do mysql
       
      (192861-como-fazer-folha-de-pagamento-de-condominio-aprenda-ja.jpg)
       
      Pagina de Apagar
      <?php session_start(); include_once("../conexao.php"); $id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT); if(!empty($id)){ $result_usuario = "DELETE FROM sites WHERE id='$id'"; $resultado_usuario = mysqli_query($conn, $result_usuario); if(mysqli_affected_rows($conn)) { $_SESSION['msg'] = "<p style='color:green;'>Usuário apagado com sucesso</p>"; header("Location: listarS"); }else{ $_SESSION['msg'] = "<p style='color:red;'>Erro o usuário não foi apagado com sucesso</p>"; header("Location: ERROR.php"); } }else{ $_SESSION['msg'] = "<p style='color:red;'>Necessário selecionar um usuário</p>"; header("Location: ERROR.php"); }  
      como eu coloco a foto !
      <?php include_once("../conexao.php"); $servico = $_POST['servico']; $empresa = $_POST['empresa']; $descricao = $_POST['descricao']; $url = $_POST['url']; $arquivo = $_FILES['arquivo']['name']; //Pasta onde o arquivo vai ser salvo $_UP['pasta'] = '../foto/foto_servicos/'; //Tamanho máximo do arquivo em Bytes $_UP['tamanho'] = 1024*1024*100; //5mb //Array com a extensões permitidas $_UP['extensoes'] = array('png', 'jpg', 'jpeg', 'gif' , 'pdf'); //Renomeiar $_UP['renomeia'] = false; //Array com os tipos de erros de upload do PHP $_UP['erros'][0] = 'Não houve erro'; $_UP['erros'][1] = 'O arquivo no upload é maior que o limite do PHP'; $_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especificado no HTML'; $_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente'; $_UP['erros'][4] = 'Não foi feito o upload do arquivo'; //Verifica se houve algum erro com o upload. Sem sim, exibe a mensagem do erro if($_FILES['arquivo']['error'] != 0){ die("Não foi possivel fazer o upload, erro: <br />". $_UP['erros'][$_FILES['arquivo']['error']]); exit; //Para a execução do script } //Faz a verificação da extensao do arquivo $extensao = strtolower(end(explode('.', $_FILES['arquivo']['name']))); if(array_search($extensao, $_UP['extensoes'])=== false){ echo " <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=/dashboard/listarS'> <script type=\"text/javascript\"> alert(\"A imagem não foi cadastrada extensão inválida.\"); </script> "; } //Faz a verificação do tamanho do arquivo else if ($_UP['tamanho'] < $_FILES['arquivo']['size']){ echo " <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=/dashboard/listarS'> <script type=\"text/javascript\"> alert(\"Arquivo muito grande.\"); </script> "; } //O arquivo passou em todas as verificações, hora de tentar move-lo para a pasta foto else{ //Primeiro verifica se deve trocar o nome do arquivo if($UP['renomeia'] == true){ //Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg $nome_final = time().'.jpg'; $nome_final2 = time().'.jpg'; }else{ //mantem o nome original do arquivo $nome_final = $_FILES['arquivo']['name']; $nome_final2 = $_FILES['arquivo']['name']; } //Verificar se é possivel mover o arquivo para a pasta escolhida if(move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta']. $nome_final)){ //Upload efetuado com sucesso, exibe a mensagem $query = mysqli_query($conn, "INSERT INTO sites (servico,empresa,fotos,descricao,url) VALUES('$servico','$empresa','$nome_final','$descricao','$url')"); echo " <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=/dashboard/listarS'> <script type=\"text/javascript\"> alert(\"Cadastrado com sucesso!.\"); </script> "; }else{ //Upload não efetuado com sucesso, exibe a mensagem echo " <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=/dashboard/listarS'> <script type=\"text/javascript\"> alert(\"Imagem não foi cadastrada com Sucesso.\"); </script> "; } }  
      Se precisar de algo mais, me falem!
    • By joelzsbit
      Pessoal implementei o link (https://xkeshi.github.io/image-compressor/) no meu site para fazer a compressão de imagens, porem preciso que essa imagem seja salva no banco.
      Não estou conseguindo pegar essa imagem comprimida e enviar para um arquivo salvar.php que é o responsável para salvar no banco.
      A imagem comprimida fica nesse bloco:
      <div class="w-100 text-center" v-if="outputURL"> <img class="mw-100" :src="outputURL" :alt="output.name"> <div class="mt-2"> <a class="btn btn-sm btn-blocks btn-outline-primary mt-2" :download="output.name" :href="outputURL" title="Download the compressed image">Download</a> </div> </div> Pensei em colocar um botão de salvar ali no lugar do Download, porem como que vou enviar os dados da imagem que estão em javascript para um arquivo salvar.php ?
×

Important Information

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