Janela de seleção de arquivos em PHP

1. Janela de seleção de arquivos em PHP

Edvaldo Silva de Almeida Júnior
EdDeAlmeida

(usa Debian)

Enviado em 02/05/2008 - 22:26h

Eu estou querendo abrir uma janela de seleção de arquivos em uma aplicação PHP, onde eu possa selecionar um arquivo de imagem para upload.

Alguem por aqui sabe como fazer isso?


  


2. Re: Janela de seleção de arquivos em PHP

Matuzalém Guimarães
matux

(usa Ubuntu)

Enviado em 02/05/2008 - 23:46h

<?
if(!isset($_POST["submit"])) {
#Montamos um formulário básico para o envio do anexo
echo "Importar Arquivo para o Sistema<br /><br/>";
echo "<form action=\"upload.php\" id=\"form\" name=\"form\" method=\"post\" enctype=\"multipart/form-data\">";
echo "Tamanho Máximo de 10MB - Tipo de Arquivo Permitido: txt<br />";
echo "<input type=\"file\" name=\"DfAnexo\" size=\"50\" /><br />";
echo "<input name=\"submit\" type=\"submit\" value=\"Importar\" class=\"button\" /> <input type=\"reset\" value=\"Redefinir\" class=\"button\" />";
echo "</form>";
}
else {
#Declaramos de onde estaremos recebendo o anexo (que será através da variável ($_FILES) de envio de arquivos por HTTP)
$DfAnexo = $_FILES["DfAnexo"]["name"];

#Se nenhum arquivo for selecionado para ser enviado, exibe a mensagem de erro abaixo
if(empty($DfAnexo)) {
echo "<body onload=\"alert('Erro no Envio: Nenhum Arquivo Selecionado')\"></body>";
exit();
}
#Caso contrário, o arquivo é checado para ser processado
else {
#Declaramos um tamanho máximo para o envio do anexo em bytes (setamos como sendo 5120000 bytes (que é igual a 5 MB))
#Se o anexo for maior que 5 MB, exibe a mensagem de erro abaixo e termina a execução do script
if($_FILES["DfAnexo"]["size"] > 10240000) {
echo "<body onload=\"alert('Erro no Envio: O Arquivo não pode ser maior que 10MB!')\"></body>";
exit();
}
#Caso contrário, o arquivo continua a ser processado
if(!empty($_FILES["DfAnexo"]["tmp_name"]) and is_file($_FILES["DfAnexo"]["tmp_name"])) {
#Declaramos a pasta aonde o arquivo será salvo (esta pasta deve estar com chmod 777)
$caminho = "upload/";

#Re-declaramos a pasta aonde o arquivo será salvo, desta vez inserindo junto a ela o nome do arquivo
$caminho = $caminho.$_FILES["DfAnexo"]["name"];

#Declaramos os tipos de extensões aceitas para o envio do anexo
if(eregi(".txt$", $_FILES["DfAnexo"]["name"])) {
#Copiamos o arquivo para a pasta setada mais acima
copy($_FILES["DfAnexo"]["tmp_name"],$caminho);
echo "<body onload=\"alert('Arquivo Importado com Sucesso!')\"></body>";
}
#Se o anexo não tiver uma extensão aceita, exibe a mensagem de erro abaixo e termina a execução do script
else {
echo "<body onload=\"alert('Erro no Envio: Extensão do Arquivo Inválida!')\"></body>";
exit();
}
}
#Se o anexo tiver sido indicado através de um caminho inválido ou tenha um nome inválido, exibe a mensagem de erro abaixo e termina a execução do script
else {
echo "<body onload=\"alert('Erro no Envio do Arquivo: Caminho e/ou Nome de Anexo.')\"></body>";
exit();
}
}
}
?>


3. Re: Janela de seleção de arquivos em PHP

Matuzalém Guimarães
matux

(usa Ubuntu)

Enviado em 02/05/2008 - 23:48h

Espero que esse código te sirva..ele é de uma aplicação que eu fiz que tema a função de carregar um arquivo de texto de outra aplicação.
No caso vc só tem que mudar as permissões e extensões para o upload.
Vc vai colocar as imagens num diretório ou vai usar alguma SGBD para isso?


4. Re: Janela de seleção de arquivos em PHP

Edvaldo Silva de Almeida Júnior
EdDeAlmeida

(usa Debian)

Enviado em 03/05/2008 - 00:32h

Obrigado. Vou testar o código.

A princípio pensei apenas em armazenar as imagens em um diretório, mas aceito sugestões. Qual opção vc acha melhor?


5. Re: Janela de seleção de arquivos em PHP

Matuzalém Guimarães
matux

(usa Ubuntu)

Enviado em 03/05/2008 - 12:04h

Eu estou desenvolvendo um projeto de Banco de Dados multimidia na faculdade, e nem todos os BD atuais tem suporte a imagens. Se não for carregar muitas imagens use num diretório mesmo.
Abraço!
Mas pesquise sobre imagens no mysql...dá mais trabalho, porém é muito mais profissional.
O código funciona perfeitamente.
Se precisar de ajuda, só falar.


6. Re: Janela de seleção de arquivos em PHP

Vinicus S Moraes
vsmoraes

(usa Arch Linux)

Enviado em 03/05/2008 - 12:11h

Nosso amigo Matux deu o código completo, mas o método que vc procura (pelo o que eu entendi) não é PHP e sim HTML. O que o PHP vai fazer é tratar o resultado disso.

Código HTML: <input type="file" name="arquivo" />

Coloque isso em um formulário e vc terá o campo para selecionar o arquivo que quiser.

Sobre a forma de armazenar o upload, o mais recomendado é que vc utilize uma pasta meesmo e no banco guarde só a referência para este arquivo.
Uma outra alternativa, não muito usual por ocupar muito espaco no banco, é vc codificar a imagem em base64 (ou similar) e guardar no banco a string gerada.


7. Re: Janela de seleção de arquivos em PHP

Edvaldo Silva de Almeida Júnior
EdDeAlmeida

(usa Debian)

Enviado em 04/05/2008 - 14:41h

Valeu pelas dicas! O problema foi resolvido a contento e mais uma vez fico grato a todos por aqui que sempre colaboram esclarecendo nossas dúvidas.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts