Em quase todos os projetos, o desenvolvedor se depara com a necessidade de fazer upload de arquivos para o servidor. Fotos, imagens, documentos, arquivos e muito mais podem ser carregados no servidor por meio da interface da web (por meio de um navegador).
Http: //localhost/index.php? Name \u003d myname & page \u003d 10
define uma solicitação GET para a página index.php. Nesse caso, os parâmetros "nome" e "página" com os valores "meunome" e "10" são passados \u200b\u200bpara o script, respectivamente. Como você pode ver, a consulta consiste em pares "nome \u003d valor" concatenados com "&". A solicitação é separada do endereço da página por um ponto de interrogação "?".
Mas GET não é adequado para grandes transferências de dados. Existe um método POST para isso. Este método transmite dados ocultos do usuário e o endereço da página permanece inalterado. Em teoria, o método POST permite a transferência de grandes blocos de dados, mas a maioria dos provedores define um limite rígido de 5 a 10 megabytes.
Para implementar o upload de arquivo, você precisa fornecer ao usuário o formulário apropriado. A tag de entrada do tipo de arquivo é destinada ao upload de arquivos.
O usuário seleciona o arquivo desejado, clica no botão "Enviar!", Após o qual o navegador transfere o arquivo especificado para o servidor. Quando o arquivo é carregado, o receiver.php é iniciado e todos os dados transferidos no formulário tornam-se automaticamente disponíveis para ele.
A lista de arquivos carregados é armazenada no array global $ _FILES. É uma matriz associativa, onde cada elemento contém a descrição de um dos arquivos. Vamos dar um exemplo:
3145728) ($ filesize \u003d ($ filesize! \u003d 0)? Sprintf ("(%. 2f MB)", $ filesize / 1024): ""; die ("Erro: O tamanho do arquivo anexado. $ Filesize." É maior do que o permitido (3 MB). ");) Else ($ filename \u003d $ _FILES [" arquivo "] [" nome "]; $ filepath \u003d $ _FILES [" arquivo "] [" tmp_name "]; $ filetype \u003d $ _FILES [" arquivo "] [" type "]; if ($ this-\u003e filetype \u003d\u003d null || $ this-\u003e filetype \u003d\u003d" ") $ this-\u003e filetype \u003d" desconhecido / desconhecido ";))) echo" Carregado com sucesso Arquivo: ". $ filename; ?\u003e
Todos os arquivos carregados são salvos pelo servidor em um diretório temporário e são excluídos automaticamente após a conclusão do script. Se você precisar salvar um arquivo no servidor, ele deve ser movido para um dos diretórios do site. Isso é feito com uma função especial move_uploaded_file ()... Geralmente é usado em conjunto com a função is_uploaded_file ()que permite determinar se o arquivo foi carregado por meio do formulário. Por exemplo:
As informações sobre cada arquivo carregado são apresentadas no script como elementos do array $ _FILES. O nome do elemento é determinado pelo atributo name da tag do formulário. No nosso caso, o atributo name é "ufile", o que significa que os dados sobre este arquivo serão armazenados no elemento $ _FILES ["ufile"].
Cada elemento $ _FILES também é uma matriz contendo cinco elementos de nome fixo:
O tamanho dos arquivos baixados pode variar significativamente de provedor para provedor. Alguns administradores proíbem totalmente o upload de arquivos. Neste caso, o arquivo ainda pode ser carregado, o servidor irá excluí-lo e o script notificará que o arquivo foi, mas já foi excluído.
Em PHP, você frequentemente precisa fazer upload de arquivos para o servidor ... é bom se o seu site tem a capacidade de fazer upload de arquivos para o site: imagens ou outros arquivos de texto ou outros formatos ... vamos falar sobre isso neste artigo ...
Portanto, precisamos aprender como fazer upload de um arquivo para o servidor com usando PHP... Para fazer isso, precisamos saber que esses downloads acontecem usando um simples formulários multiparte, que possui um campo especial para enviar um arquivo.
O parâmetro enctype em tal formato deve ser multipart / form-data. Enviado pelo método POST.
Como lidar com formulários multipartes em PHP
Após clicar no botão Download, o PHP coloca o arquivo em um diretório temporário e atribui um nome temporário ao arquivo (é diferente do baixado - será visto a seguir). E imediatamente 4 variáveis \u200b\u200bdo array global $ _FILES são criadas:
- $ _FILES ["uploadfile"] ["nome"] - o nome do arquivo antes de ser enviado ao servidor (ou seja, o original);
- $ _FILES ["uploadfile"] ["tamanho"] - o tamanho do arquivo recebido em bytes;
- $ _FILES ["uploadfile"] ["tipo"] - Tipo MIME do arquivo recebido (se o navegador foi capaz de determinar), por exemplo: imagem / gif, imagem / png, imagem / jpeg, texto / html;
- $ _FILES ["uploadfile"] ["tmp_name"] - contém o nome do arquivo no diretório temporário, por exemplo: / tmp / php57Opq2Y;
- $ _FILES ["uploadfile"] ["error"] - Um código de erro que pode ocorrer ao enviar um arquivo. Chave ["erro"] foi adicionado no PHP 4.2.0.
Nota: após o final do script para enviar o arquivo para o servidor - o arquivo temporário será excluído, então você precisa copiar este arquivo do diretório temporário para alguma pasta, por exemplo, arquivos usando a função cópia de (); Não há necessidade de usar a função move (), pois a cópia neste momento tem 2 vantagens: o arquivo temporário será excluído por conta própria, e se o diretório temporário estiver localizado em outro meio, um erro será exibido.
pronto: o processo deve iniciar quando o botão "Upload" for clicado, ou seja, por exemplo: if ($ _ POST ["enviar"]) (então realizar as ações)
Uma imagem que mostrará claramente as 4 variáveis \u200b\u200bcriadas do array global $ _FILES:
Acho que agora está tudo claro para você, o que vai para onde e o que é criado onde ... e então eu manipulo esses campos, podemos começar a trabalhar com esse formulário em php
O próprio script pode ser parecido com isto:
if ($ _ POST ["enviar"]) (
@mkdir ("arquivos", 0777); // cria uma pasta, se ela não existir então não haverá erro, defina os direitos
/ * echo "
";";*/
print_r ($ _ FILES);
echo "
$ uploaddir \u003d "arquivos /";
$ uploadfile \u003d $ uploaddir.basename ($ _ FILES ["uploadfile"] ["nome"]);
If (copy ($ _ FILES ["uploadfile"] ["tmp_name"], $ uploadfile)) (
echo "
O arquivo foi enviado com sucesso para o servidor
";) outro (
echo "
Falha ao fazer upload do arquivo para o servidor
";Saída;
}
// Dados sobre o arquivo carregado
echo "
Informações sobre o arquivo enviado ao servidor:
";echo "
Nome original do arquivo enviado: ". $ _ FILES [" uploadfile "] [" nome "]."
";echo "
Tipo MIME do arquivo enviado: ". $ _ FILES [" uploadfile "] [" tipo "]."
";echo "
O tamanho do arquivo enviado em bytes: ". $ _ FILES [" uploadfile "] [" tamanho "]."
";echo "
Nome do arquivo temporário: ". $ _ FILES [" uploadfile "] [" tmp_name "]."
";}
É assim que ocorre o processo de upload de um arquivo para o servidor por meio do PHP.
Espero que tenha sido útil para alguém!
Como fazer upload de um arquivo para um servidor usando PHP? Neste artigo, examinaremos mais de perto esse problema com exemplos.
Formulário HTML para enviar o arquivo
A primeira coisa a saber para fazer upload de arquivos para o servidor são os detalhes dos formulários HTML que enviam o arquivo.
Aqui está um exemplo de HTML para tal formulário: