Apakah ada cara untuk memeriksa ukuran file sebelum mengunggahnya menggunakan JavaScript?
Apakah ada cara untuk memeriksa ukuran file sebelum mengunggahnya menggunakan JavaScript?
Ya , ada fitur baru dari W3C yang didukung oleh beberapa browser modern, File API . Ini dapat digunakan untuk tujuan ini, dan mudah untuk menguji apakah itu didukung dan mundur (jika perlu) ke mekanisme lain jika tidak.
Ini contoh lengkapnya:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Show File Data</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function showFileSize() {
var input, file;
// (Can't use `typeof FileReader === "function"` because apparently
// it comes back as "object" on some browsers. So just see if it's there
// at all.)
if (!window.FileReader) {
bodyAppend("p", "The file API isn't supported on this browser yet.");
return;
}
input = document.getElementById('fileinput');
if (!input) {
bodyAppend("p", "Um, couldn't find the fileinput element.");
}
else if (!input.files) {
bodyAppend("p", "This browser doesn't seem to support the `files` property of file inputs.");
}
else if (!input.files[0]) {
bodyAppend("p", "Please select a file before clicking 'Load'");
}
else {
file = input.files[0];
bodyAppend("p", "File " + file.name + " is " + file.size + " bytes in size");
}
}
function bodyAppend(tagName, innerHTML) {
var elm;
elm = document.createElement(tagName);
elm.innerHTML = innerHTML;
document.body.appendChild(elm);
}
</script>
</head>
<body>
<form action='#' onsubmit="return false;">
<input type='file' id='fileinput'>
<input type='button' id='btnLoad' value='Load' onclick='showFileSize();'>
</form>
</body>
</html>
Dan di sini adalah dalam tindakan. Cobalah itu dengan Chrome atau Firefox versi terbaru.
Sedikit di luar topik, tetapi: Perhatikan bahwa validasi sisi klien bukan pengganti untuk validasi sisi server. Validasi sisi klien murni untuk memungkinkan memberikan pengalaman pengguna yang lebih baik. Misalnya, jika Anda tidak mengijinkan mengunggah file lebih dari 5MB, Anda bisa menggunakan validasi sisi klien untuk memeriksa bahwa file yang dipilih pengguna tidak lebih dari 5MB dan memberi mereka pesan ramah yang bagus jika itu adalah (jadi mereka tidak menghabiskan waktu mengunggah hanya untuk mendapatkan hasil yang dibuang di server), tetapi Anda juga harus memberlakukan batas itu di server, karena semua batas sisi klien (dan validasi lainnya) dapat dielakkan.
Menggunakan jquery:
sumber
MiB
jika Anda menghitung ke pangkalan1024
.Bekerja untuk Elemen File Dinamis dan Statis
Solusi Javascript Saja
sumber
size
properti$(obj).files[0].size/1024/1024;
Tetapi mengubahnya menjadiobj.files[0].size/1024/1024;
TidakYa, menggunakan File API di browser yang lebih baru. Lihat jawaban TJ untuk detailnya.Jika Anda perlu mendukung browser lama juga, Anda harus menggunakan pengunggah berbasis Flash seperti SWFUpload atau Uploadify untuk melakukan ini.
The swfupload Fitur Demo menunjukkan bagaimana
file_size_limit
pengaturan bekerja.Perhatikan bahwa ini (jelas) membutuhkan Flash, ditambah cara kerjanya sedikit berbeda dari bentuk unggah normal.
sumber
Sederhana saja.
sumber
Jika Anda menggunakan Validasi jQuery, Anda dapat menulis sesuatu seperti ini:
sumber
Saya membuat sesuatu seperti itu:
sumber
Saya menggunakan satu fungsi Javascript utama yang saya temukan di situs Jaringan Pengembang Mozilla https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications , bersama dengan fungsi lain dengan AJAX dan diubah sesuai dengan kebutuhan saya. Ia menerima id elemen dokumen mengenai tempat dalam kode html saya di mana saya ingin menulis ukuran file.
Bersulang
sumber
Meskipun pertanyaannya dijawab, saya ingin memposting jawaban saya. Mungkin berguna bagi pemirsa di masa depan. Anda dapat menggunakannya seperti pada kode berikut.
sumber
Contoh JQuery yang disediakan di utas ini sudah sangat usang, dan google tidak membantu sama sekali jadi inilah revisi saya:
sumber
Anda bisa mencoba ini fineuploader
Ini berfungsi dengan baik di bawah IE6 (dan di atas), Chrome atau Firefox
sumber
Jika Anda mengatur Yaitu 'Mode Dokumen' ke 'Standar' Anda dapat menggunakan metode 'ukuran' javascript sederhana untuk mendapatkan ukuran file yang diunggah.
Atur Ie 'Document Mode' ke 'Standards':
Kemudian, gunakan metode javascript 'ukuran' untuk mendapatkan ukuran file yang diunggah:
Ini bekerja untuk saya.
sumber