Upload no PHP
Entrei em período de férias por isso que estou meio sumido e o pan também está gastando muito do meu tempo, adoro esportes, apesar de não praticá-los muito. rs
Olá galerinha, hoje vamos ver como se faz upload de arquivos no php, é molezinha.
Arquivo HTML:
Agora no arquivo php:
Antes de explicar, o código acima existem algumas observações a serem feitas.
Obs1: No phpconfig, tem que estar autorizado o upload de arquivos, e também, deve ser verificado o tamanho máximo de upload, que por padrão é dois megas, dependendo da sua necessidade terá que aumentá-lo.
Obs2:Quando a página php, é chamada já foi feito o upload do arquivo, porém ele está em uma pasta temporária, o php só vai ser responsável de mudar o diretório e o nome do arquivo.
Acho que está tudo explicadinho, nos mííííííííínimos detalhes.
fuiii...
Olá galerinha, hoje vamos ver como se faz upload de arquivos no php, é molezinha.
Arquivo HTML:
<form enctype="multipart/form-data" action="/upload.php" method="POST">
<label for = "arqUsuario">Imagem</label>
<input name="arqUsuario" type="file" />
<input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
<input type="submit" value="Send File" />
</form>
- O "tipo" do formulário tem que ser multipart/form-data, para fazer o upload lá no servidor.
- Um input do tipo file, responsavel por armazenar o endereço do arquivo na máquina do usuário, junto com ele vem um botão, que no FF o value é Browser, para procurar o arquivo, sem precisar digitar o endereço, porém não sei como mudar as características desse botão :(.
- Um input hidden com name MAX_FILE_SIZE, responsável por indicar o tamanho máximo permitido do arquivo que vai ser feito o upload.
- E é claro um submit para mandar o arquivo ao servidor e o php armazená-lo.
Agora no arquivo php:
$uploaddir = '/home/meusProjetos/upload/';
$arquivo = $_FILES['arqUsuario'];
$uploadfile = $uploaddir . basename($arquivo['name']);
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {
echo "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif
ou png. Envie outro arquivo";
} else if($arquivo["size"] > $_POST["MAX_FILE_SIZE"]) {
echo "Arquivo em tamanho muito grande! Envie outro arquivo";
} else {
if (move_uploaded_file($arquivo['tmp_name'], $uploadfile)) {
echo "Arquivo válido e o upload feito.\n";
chmod($uploadfile , 0766);
} else {
echo "Não foi possivel fazer o upload!\n";
}
}
?>
Antes de explicar, o código acima existem algumas observações a serem feitas.
Obs1: No phpconfig, tem que estar autorizado o upload de arquivos, e também, deve ser verificado o tamanho máximo de upload, que por padrão é dois megas, dependendo da sua necessidade terá que aumentá-lo.
Obs2:Quando a página php, é chamada já foi feito o upload do arquivo, porém ele está em uma pasta temporária, o php só vai ser responsável de mudar o diretório e o nome do arquivo.
- $uploaddir é responsável pelo endereço definitivo do arquivo.
- A variável $arquivo que recebe $_FILES['userfile'], possui todos os valores do arquivo
- $uploadfile terá todo o caminho do arquivo
- no primeiro if é verificado se o tipo do arquivo é diferente à uma imagem dos tipos (pjpeg|jpeg|png|gif|bmp), se for, ele não move o arquivo para uma pasta definitiva.
- A instrução move_uploaded_file é a responsável por mover o arquivo de um diretório temporário para um definitivo (Oh! não me diga).
- a instrução chmod(), irá trocar as permissões do arquivo, isso se faz necessário, para visualizar e modificar os arquivos, o 0766 lhe dá permissão de alterar e remover.
Acho que está tudo explicadinho, nos mííííííííínimos detalhes.
fuiii...
6 Comentários:
Olá amigo
gostei do seu passo a passo.
agora como eu poderia fazer isso numa pagina de cadastro onde ao fazer o upload a foto ja apareça ao lado no mesmo formulário?
att
Rodrigo
Há duas formas de serem feitas,
primeira->Se esse upload, não for feito dinamicamente, quando for fazer o reload da página, pega-se o endereço em que foi salvo a nova imgagem e seta ela no atributo src do elemento img, via PHP.
Segunda -> Utilizando a mesma idéia da primeira, porém faz-se isso javascript. Pra fazer dessa forma, acredito que só seja legal, se o seu site utilizar ajax, senão a primeira forma é melhor, pois essa é um pouco mais complicada, pra quem não está acostumado
Olá amigo,
fiz da forma 1 mas a imagem não está carregando. Nao consigo postar o codigo aqui no comentario para vc ver melhor.
Mas a duvida e se posso pegar direto a varialvel uploadfile e colocar no src do img? Pq dessa forma o endereço da imagen fica localhost/var/www/site.....oque é estranho não é mesmo?
att
Rodrigo
Você pode só que a variável $uploadfile, tem que ser enviada (ou por POST ou GET).
Passa o seu código para o meu e-mail, para eu poder dar uma olhada
noobshadown[at]gmail[dot]com
Teria como enviar o form por GET ?
Tem como sim, só que na hora de pegar os valores substitui POST por GET
Postar um comentário
Assinar Postar comentários [Atom]
<< Página inicial