Ir para conteúdo


Revista PROGRAMAR – Edição 46 (Setembro 2014): Download já disponível!

- - - - -

[PHP] Upload/Ver pastas/ficheiros e download destes + explicações

php

  • Por favor inicie sessão para responder
15 respostas a este tópico

#1 RicardoR

RicardoR

    void

  • Membro
  • PipPip
  • 71 mensagens

Publicado 11 de Fevereiro de 2008 - 22:24

Upload/Ver pastas/ficheiros + Explicações

Este código já tem marcada presença neste armazém mas vou fazer desta vez uma explicação mais promenorizada dos passos no decorrer deste código.
Para além do upload via estar a visualização de pastas/ficheiros e download destes mesmos.O código pode ser manuzeado com o vosso toque pessoal gráfico,recomendo no que interfere só a este código css.

Página de formulário.
formulario.html
Código (HTML):
<form action="upload.php" method="POST" enctype="multipart/form-data">
 <p>Ficheiro:</font></p>
  <p>
    <input type="file" name="file">
   <br>
    <br />
    <input type="submit" value="Enviar">
    </p>
</form>

Formulário simples:
A página upload.php trata do formulário- código abaixo.
O que vos pode causar impressão é o enctype="multipart/form-data .Isto liberta o tipo de ficheiros para todos os tipos.
O input type="file" serve para abrir a janela onde procuras o ficheiro.

Código  igual ao do outro sitema de uploads.
upload.php
Código (PHP):
$destino = "directoria"; //Pasta onde serao armazenados os uploads

$mandar = $destino."/".$file_name; //isto introduz a barra no directorio exemplo: directoria/ de seguido do nome do ficheiro
if(!move_uploaded_file($file, $mandar)) { //move o ficheiro para a directoria
   echo "O ficheiro não pode ser enviado.<br>"; //caso nao tenha sido enviado
echo"<a href= formulario.html>Voltar</a>font>";
}
else { //se foi
   echo "O ficheiro foi enviado com sucesso.<br>";
   echo "O arquivo enviado foi este:   $file"; //variavel file correspondente ao ficheiro enviado
}
echo"<a href= formulario.html>Voltar</a>font>"; // voltar a pagina de formulário
?>

Agora página que mostra a ficheiros ,directoria e sub-pastas:
mostrar.php
Código (PHP):
<?php

$dir = "directoria"; //definir directoria

$sub = ($_GET['dir']); // sub-pastas
$path = 'directoria'; //definam aqui tambem a directoria
$path = $path . "$sub";
$dh = opendir($path); //abre directoria
while (($file = readdir($dh)) !== false) {
    if($file != "." && $file != "..") { // se ha ficheiro e/ou pasta
            if (substr($file, -4, -3) =="."){ // se é um ficheiro
            echo " $file - <a href=directoria$sub/$file>Download</a>"; // nome e download do ficheiro
//Nao se esquecam de substituir em cima onde está escrito directoria pela directoria
            }else{            
        echo " <a href='?dir=$sub/$file'>$file</a><br />"; //caso seja pasta
          }
        $i++;
    }
}
closedir($dh); //fechar
 
}?>

Espero que não haja dúvidas e que tenham gostado :)

Abraço

#2 magal

magal

    Boolean User

  • Membro
  • PipPipPip
  • 132 mensagens

Publicado 11 de Fevereiro de 2008 - 22:32

Brigadao! Vai dar-me muito jeito! Abraço Ricardo

#3 sergiomendes

sergiomendes

    null

  • Novo Membro
  • Pip
  • 4 mensagens

Publicado 21 de Fevereiro de 2008 - 18:12

onde esta a linha $destino = "directoria"; //Pasta onde serao armazenados os uploads
posso colocar ai o path e mandar escrever para a BD??

preciso de fazer um formulario com alguns elementos e incluir a foto.

#4 RicardoR

RicardoR

    void

  • Membro
  • PipPip
  • 71 mensagens

Publicado 22 de Fevereiro de 2008 - 09:54

Ver Mensagemsergiomendes, em 21 de Fevereiro de 2008 - 18:12, disse:

onde esta a linha $destino = "directoria"; //Pasta onde serao armazenados os uploads
posso colocar ai o path e mandar escrever para a BD??

preciso de fazer um formulario com alguns elementos e incluir a foto.


Caso queiras escrever na BD tens de ter um código diferente, este é apenas para o servidor.
Para mostrar fotos também dever ter um código diferente apenas para a aparência das mesmas.Se tentares com este vai-te fazer o download.
Queres fazer exactamente o quê que ainda não percebi :D
Abraço

#5 sergiomendes

sergiomendes

    null

  • Novo Membro
  • Pip
  • 4 mensagens

Publicado 22 de Fevereiro de 2008 - 17:55

O que eu quero fazer é um formulario que vai escrever para uma tabela (neste caso pilotos)
Para alem de ter:
Nome
Morada
Telefone
bla bla bla
ter tb a foto da pessoa.
Pelo que me disseram o ideal é escrever nesse campo a path onde se encontra a foto e nao inserir a foto na BD.

#6 RicardoR

RicardoR

    void

  • Membro
  • PipPip
  • 71 mensagens

Publicado 23 de Fevereiro de 2008 - 19:21

No teu caso como é uma foto de um perfil o código acima não te vai dar muito jeito.
Se fosse a ti enviava tudo inclusive a foto para a bd, assim seria muito mais fácil depois para carregar.
Uma ideia para não sobrecarregar a bd é não colocar efectivamente as fotos na bd mas sim hospeda-las em sites próprios para isso, como é o caso do ImageHack, se vires há muitos forúns a usar este método.Este método reduz-te o  espaço ocupado e é práctico é só colocar o código que eles te dão depois.
Abraço

#7 renato6

renato6

    void

  • Membro
  • PipPip
  • 51 mensagens

Publicado 02 de Abril de 2008 - 08:19

como e k eu, utilizando este codigo posso fazer o upload de imagens so que para a base de dados?

cumps

#8 anuska

anuska

    void

  • Membro
  • PipPip
  • 57 mensagens

Publicado 18 de Junho de 2008 - 22:33

mas para armazenar os ficheiros temos de ter uma base de dados não é? E quais sao os atributos da Bse de dados?

desculp a ignorância
obg ;)

#9 Dumpster

Dumpster

    Boolean User

  • Membro
  • PipPipPip
  • 145 mensagens

Publicado 18 de Junho de 2008 - 22:36

Ver Mensagemanuska, em 18 de Junho de 2008 - 22:33, disse:

mas para armazenar os ficheiros temos de ter uma base de dados não é? E quais sao os atributos da Bse de dados?

desculp a ignorância
obg ;)

Lol não se armazenam ficheiros em bases de dados.

#10 djthyrax

djthyrax

    Stack Overflow

  • Moderador
  • PipPipPipPipPipPipPip
  • 15514 mensagens

Publicado 18 de Junho de 2008 - 22:37

Ver MensagemDumpster, em 18 de Junho de 2008 - 22:36, disse:

Lol não se armazenam ficheiros em bases de dados.
Na verdade, podes armazenar. Não é é prático nem eficiente.

#11 Dumpster

Dumpster

    Boolean User

  • Membro
  • PipPipPip
  • 145 mensagens

Publicado 18 de Junho de 2008 - 22:39

Ver Mensagemtirácio, em 18 de Junho de 2008 - 22:37, disse:

Na verdade, podes armazenar. Não é é prático nem eficiente.

Nunca disse que não era possivel ;)

#12 candidosa2

candidosa2

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 04 de Maio de 2009 - 17:06

este códigos so servem para download e Upload

#13 bruno1234

bruno1234

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 2184 mensagens

Publicado 04 de Maio de 2009 - 17:09

Não há problema nenhum em guardar o conteudo de um ficheiro numa base de dados numa coluna em formato binário.

Até acho prático para um site de legendas por exemplo.
O pessoal envia o seu ficheiro srt, esse ficheiro é serializado para o seu campo da BD com os restantes dados.

E qd alguém quer fazer o download, é deserializado para um ficheiro srt e enviado pelo response.
É uma situação prática onde se pode guardar ficheiros numa BD.

#14 candidosa2

candidosa2

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 04 de Maio de 2009 - 17:25

http://download.simplemachines.org/
sim queria coisa assim

#15 bruno1234

bruno1234

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 2184 mensagens

Publicado 04 de Maio de 2009 - 17:29

O q me parece q foi feito nesse caso foi guardar na base de dados a localização do ficheiro.

Quando tu carregas no teu link p download, isso vai à base de dados perguntar onde tá o ficheiro, e depois é enviado esse ficheiro.

#16 candidosa2

candidosa2

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 04 de Maio de 2009 - 17:33

Bem queria saber se e possível um script assim php