Saya memiliki objek unggah file di halaman saya:
<input type="file" ID="fileSelect" />
dengan file excel berikut di desktop saya:
- file1.xlsx
- file1.xls
- file.csv
Saya ingin upload file HANYA menunjukkan .xlsx
, .xls
, & .csv
file.
Menggunakan accept
atribut, saya menemukan tipe konten ini merawat .xlsx
& .xls
ekstensi ...
accept
= application / vnd.openxmlformats-officedocument.spreadsheetml.sheet (.XLSX)
accept
= application / vnd.ms-excel (.XLS)
Namun, saya tidak dapat menemukan tipe konten yang benar untuk file Excel CSV! Ada saran?
CONTOH: http://jsfiddle.net/LzLcZ/
Jawaban:
Yah ini memalukan ... Saya menemukan solusi yang saya cari dan tidak bisa lebih sederhana. Saya menggunakan kode berikut untuk mendapatkan hasil yang diinginkan. Semoga ini bisa membantu seseorang di masa depan. Terima kasih semuanya atas bantuan Anda.
Jenis Penerimaan yang Valid:
Untuk file CSV (.csv), gunakan:
Untuk File Excel 97-2003 (.xls), gunakan:
Untuk Excel Files 2007+ (.xlsx), gunakan:
Untuk File Teks (.txt) gunakan:
Untuk File Gambar (.png / .jpg / etc), gunakan:
Untuk File HTML (.htm, .html), gunakan:
Untuk File Video (.avi, .mpg, .mpeg, .mp4), gunakan:
Untuk File Audio (.mp3, .wav, dll), gunakan:
Untuk File PDF , gunakan:
DEMO:
http://jsfiddle.net/dirtyd77/LzLcZ/144/
CATATAN:
Jika Anda mencoba menampilkan file Excel CSV (
.csv
), JANGAN gunakan:text/csv
application/csv
text/comma-separated-values
(hanya berfungsi di Opera ).Jika Anda mencoba untuk menampilkan jenis file tertentu (misalnya, a
WAV
atauPDF
), maka ini hampir selalu berfungsi ...sumber
<input type="file" accept=".csv, text/csv" />
bekerja untuk saya di firefox, chrome, dan opera di mac. hanya .csv tidak berfungsi di semua browser.Saat ini Anda hanya dapat menggunakan ekstensi file
sumber
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel
) masih tidak berfungsi di Edge 41.16299.820.0 stackoverflow.com/questions/31875617/… wpdev.uservoice.com/forums/257854-microsoft-edge-developer/…Dom atribut ini sangat tua dan tidak diterima di browser modern sejauh yang saya tahu, Tapi di sini ada alternatif untuk itu, Coba ini
Saya kira itu akan membantu Anda tentu saja Anda dapat mengubah skrip ini sesuai dengan kebutuhan Anda.
sumber
accept
atribut adalah petunjuk yang disediakannya untuk dialog file-terbuka. Pengguna harus disajikan dengan file yang cocok secara default, mungkin dengan opsi untuk memilih jenis lain jika mereka mau - ini adalah bagaimana sebagian besar browser modern berperilaku sekarang.Saya telah menggunakan
text/comma-separated-values
CSime mime-type di accept attribute dan berfungsi dengan baik di Opera. Mencobatext/csv
tanpa keberuntungan.Beberapa yang lain Tipe-MIME untuk CSV jika yang disarankan tidak berfungsi:
Sumber: http://filext.com/file-extension/CSV
sumber
Ini tidak berfungsi untuk saya di bawah Safari 10:
Saya harus menulis ini sebagai gantinya:
sumber
Anda dapat mengetahui tipe konten yang benar untuk file apa pun hanya dengan melakukan hal berikut:
1) Pilih file yang tertarik,
2) Dan jalankan di konsol ini:
Anda juga dapat mengatur atribut "beberapa" untuk input Anda untuk memeriksa tipe konten untuk beberapa file sekaligus dan lakukan selanjutnya:
Terima atribut memiliki beberapa masalah dengan beberapa atribut dan tidak berfungsi dengan benar dalam kasus ini.
sumber
Saya telah memodifikasi solusi @yogi. Selain itu, ketika file dalam format yang salah saya mereset nilai elemen input.
Saya memiliki buildin verifikasi khusus, karena di jendela file terbuka pengguna masih dapat memilih opsi "Semua file ('*')", terlepas dari apakah saya secara eksplisit mengatur atribut accept di elemen input.
sumber
Sekarang Anda dapat menggunakan atribut validasi input html5 baru
pattern=".+\.(xlsx|xls|csv)"
.sumber
This attribute applies when the value of the type attribute is text, search, tel, url or email; otherwise it is ignored.
Mengenai masukan file, mereka melanjutkan dengan mengatakanfile: A control that lets the user select a file. Use the accept attribute to define the types of files that the control can select.