Estou desenvolvendo um script de upload php simples, e os usuários podem fazer upload apenas de arquivos ZIP e RAR.
Quais tipos MIME devo usar para verificar $_FILES[x][type]
? (uma lista completa, por favor)
Obrigado..
php
zip
mime-types
rar
mrdaliri
fonte
fonte
Respostas:
As respostas de freedompeace, Kiyarash e Sam Vloeberghs:
Eu também verificaria o nome do arquivo. Aqui está como você pode verificar se o arquivo é um arquivo RAR ou ZIP. Testei-o criando um aplicativo rápido de linha de comando.
Observe que ainda não será 100% certo, mas provavelmente é bom o suficiente.
Mas até o WinRAR detecta arquivos não RAR como arquivos SFX:
fonte
application/x-zip-compressed
zip
ourar
arquivo. De acordo com as especificações do WC3, isso será interpretado como: "Prefiro umapplication/zip
|application/x-rar-compressed
tipo de conteúdo, mas se você não puder entregar isso, umapplication/octet-stream
(fluxo de arquivos) também será bom".multipart/x-zip
ser válido? Não é multi-parte. A lista SitePoint contém muitos tipos MIME imprecisos e está longe de ser concluída. O registro oficial de tipos de mídia da IANA não está (e provavelmente nunca estará) 100% completo.Para upload:
Uma lista oficial de tipos de mímica pode ser encontrada na IANA (Autoridade de números atribuídos à Internet) . De acordo com o
Content-Type
cabeçalho da lista dezip
isapplication/zip
.O tipo de mídia dos
rar
arquivos não está registrado oficialmente na IANA, mas o valor não oficial do tipo MIME comumente usado éapplication/x-rar-compressed
.application/octet-stream
significa tanto quanto: "Enviei a você um fluxo de arquivos e o conteúdo desse fluxo não foi especificado" (é verdade que também pode ser um arquivozip
ourar
). O servidor deve detectar qual é o conteúdo real do fluxo.Nota: Para upload, não é seguro confiar no tipo MIME definido no
Content-Type
cabeçalho. O cabeçalho é definido no cliente e pode ser definido como qualquer valor aleatório. Em vez disso, você pode usar as funções de informações do arquivo php para detectar o tipo mime de arquivo no servidor.Para download:
Se você deseja baixar um
zip
arquivo e nada mais, defina apenas um únicoAccept
valor de cabeçalho. Quaisquer valores adicionais configurados serão usados como reserva, caso o servidor não possa satisfazer o seu noAccept
tipo de mime solicitado cabeçalho.De acordo com as especificações do WC3, isto:
será interpretado como: "Prefiro um
application/zip
tipo MIME, mas se você não puder entregar isso, umapplication/octet-stream
(um fluxo de arquivos) também será bom".Portanto, apenas um:
Garantirá um
zip
arquivo (ou uma406 - Not Acceptable
resposta, caso o servidor não consiga atender à sua solicitação).fonte
Você não deve confiar
$_FILES['upfile']['mime']
, verifique o tipo MIME sozinho. Para esse propósito, você pode usar afileinfo
extensão , habilitada por padrão a partir do PHP 5.3.0.NOTA: Não se esqueça de ativar a extensão no seu
php.ini
e reiniciar o servidor:fonte
Em uma pergunta vinculada , há algum código Objective-C para obter o tipo mime para uma URL de arquivo. Eu criei uma extensão Swift com base no código Objective-C para obter o tipo mime:
fonte
Como a extensão pode conter mais ou menos que três caracteres, o seguinte testará uma extensão, independentemente do seu comprimento.
Tente o seguinte:
para verificar todos os caracteres após o último '.'
fonte