Saya sedang mengembangkan skrip unggah php sederhana, dan pengguna hanya dapat mengunggah file ZIP dan RAR.
Jenis MIME apa yang harus saya gunakan untuk memeriksa $_FILES[x][type]
? (daftar lengkap silakan)
Terima kasih..
php
zip
mime-types
rar
mrdaliri
sumber
sumber
Jawaban:
Jawaban dari freedompeace, Kiyarash dan Sam Vloeberghs:
Saya akan melakukan pemeriksaan pada nama file juga. Inilah cara Anda dapat memeriksa apakah file tersebut adalah file RAR atau ZIP. Saya mengujinya dengan membuat aplikasi baris perintah cepat.
Perhatikan bahwa itu masih belum pasti 100%, tetapi mungkin cukup baik.
Tetapi bahkan WinRAR mendeteksi file non RAR sebagai arsip SFX:
sumber
application/x-zip-compressed
zip
ataurar
file sama sekali. Menurut spesifikasi WC3 ini akan diinterpretasikan sebagai: "Saya lebih sukaapplication/zip
|application/x-rar-compressed
jenis konten, tetapi jika Anda tidak dapat memberikan ini sebuahapplication/octet-stream
(stream file) juga baik-baik saja".multipart/x-zip
mungkin dunia ini valid? Ini bukan multi-bagian. Daftar SitePoint berisi banyak tipe MIME yang tidak akurat dan jauh dari lengkap. Registri resmi Jenis Media IANA tidak (juga kemungkinan tidak akan) 100% selesai.Untuk mengunggah:
Daftar resmi tipe mime dapat ditemukan di Internet Assigned Numbers Authority (IANA) . Menurut
Content-Type
header daftar merekazip
adalahapplication/zip
.Jenis media untuk
rar
file tidak terdaftar secara resmi di IANA tetapi nilai tipe mime tidak resmi yang umum digunakan adalahapplication/x-rar-compressed
.application/octet-stream
berarti sebanyak: "Saya mengirim Anda aliran file dan konten aliran ini tidak ditentukan" (jadi memang benar bahwa itu bisa berupa filezip
ataurar
juga). Server seharusnya mendeteksi apa isi sebenarnya dari aliran itu.Catatan: Untuk mengunggah, tidak aman untuk mengandalkan tipe pantomim yang diatur di
Content-Type
header. Header diatur pada klien dan dapat diatur ke nilai acak apa pun. Sebagai gantinya, Anda dapat menggunakan fungsi info file php untuk mendeteksi tipe mime file di server.Untuk diunduh:
Jika Anda ingin mengunduh
zip
file dan tidak ada yang lain, Anda hanya perlu menetapkan satuAccept
nilai header tunggal . Nilai tambahan apa pun yang ditetapkan akan digunakan sebagai fallback jika server tidak dapat memenuhi Anda dalam jenisAccept
mime yang diminta header.Menurut spesifikasi WC3 ini:
akan diinterpretasikan sebagai: "Saya lebih suka tipe
application/zip
mime, tetapi jika Anda tidak dapat memberikan iniapplication/octet-stream
(aliran file) juga baik-baik saja".Jadi hanya satu:
Akan menjamin Anda
zip
file (atau406 - Not Acceptable
tanggapan jika server tidak dapat memenuhi permintaan Anda).sumber
Anda tidak boleh percaya
$_FILES['upfile']['mime']
, periksa sendiri jenis MIME. Untuk tujuan itu, Anda dapat menggunakanfileinfo
ekstensi , diaktifkan secara default pada PHP 5.3.0.CATATAN: Jangan lupa untuk mengaktifkan ekstensi di Anda
php.ini
dan mulai ulang server Anda:sumber
Dalam pertanyaan yang ditautkan , ada beberapa kode Objective-C untuk mendapatkan jenis mime untuk URL file. Saya telah membuat ekstensi Swift berdasarkan kode Objective-C untuk mendapatkan tipe mime:
sumber
Karena ekstensi mungkin mengandung lebih atau kurang dari tiga karakter, maka berikut ini akan diuji untuk ekstensi terlepas dari panjangnya.
Coba ini:
untuk memeriksa semua karakter setelah '.'
sumber