Làm cách nào để xác thực kích thước tệp ở phía máy khách bằng JavaScript? Tôi đang sử dụng type=file
cho việc lựa chọn các tập tincách xác thực kích thước tệp bằng HTML và Javascript ở phía máy khách
Trả lời
CẬP NHẬT 2013 như các chỉnh sửa này, File API được hỗ trợ trong tất cả các trình duyệt chính, và trong IE như các phiên bản 10
http://caniuse.com/#search=file%20api
Bạn có thể vẫn muốn sử dụng SWFUpload nếu bạn vẫn cần hỗ trợ IE9 trở xuống, mặc dù vào thời điểm này, nó có thể là nhiều hơn dự phòng, vì tệp api html5 có hỗ trợ trên nền tảng di động nơi SWFUpload không thể tiếp cận. Tệp api html5 được dựa trên tệp api của firefox như được ghi chú bên dưới.
cũng Xem câu hỏi trùng lặp này Client Checking file size using HTML5?
UPDATE: Firefox đã thay đổi API của họ để này https://developer.mozilla.org/en/DOM/FileReader
Bạn có thể làm điều đó trong firefox như vậy
html:
<form action="" method="get" accept-charset="utf-8"> <input type="file" name="file" value="" id="file"> <p><input type="submit" value="Continue →"></p> </form>
javascript:
var filesize = document.forms[0].file.files[0].fileSize
nếu có một cách để làm điều này trong IE, tôi không biết điều đó. Nó có thể liên quan đến activeX hoặc một số rác khác.
chỉnh sửa: tôi thấy here này, cách làm việc này trong IE
<head>
<script>
function getSize()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
alert(size + " bytes");
}
</script>
</head>
<body>
<form name="upload">
<input type="file" name="file">
<input type="button" value="Size?" onClick="getSize();">
</form>
</body>
</html>
lẽ bạn có thể sử dụng SWFUpload thay vào đó, mà là một ứng dụng Flash nhỏ để xử lý các mặt hàng đã được upload xong cho bạn. Từ danh sách tính năng của họ:
- tải nhiều file cùng một lúc bằng ctrl/shift-lựa chọn trong hộp thoại
- Javascript callbacks trên tất cả các sự kiện
- thông tin tập tin Nhận trước khi tải lên bắt đầu
- yếu tố Phong cách upload với XHTML và css
- Hiển thị thông tin trong khi các tệp đang tải lên bằng cách sử dụng HTML
- Không cần tải lại trang cần thiết
- Hoạt động trên tất cả các nền tảng/trình duyệt có hỗ trợ Flash.
- làm giảm một cách duyên dáng mẫu upload HTML bình thường nếu Flash hoặc javascript không có sẵn
- kiểm soát filesize trước khi tải lên bắt đầu
- Chỉ hiển thị định dạng tập tin được lựa chọn trong hộp thoại
- cập Queue, xóa/thêm các tập tin trước khi bắt đầu tải lên
Tôi muốn kết hợp hai cách khác nhau để kiểm tra kích thước tệp ở phía máy khách bằng javascript. Tôi đã thử nghiệm nó trên FF/IE/Chrome và hoạt động tốt:
<script type="text/javascript">
function checkBrowser()
{
if(navigator.appName == "WebTV")
{
alert("You're using the WebTV browser.")
}
if(navigator.appName == "Netscape")
{
checkFileSizeFF();
}
if(navigator.appName == "Microsoft Internet Explorer")
{
checkFileSizeIE();
}
}
function checkFileSizeFF()
{
var filesize = document.forms[0].file.files[0].fileSize;
alert(filesize/(1024*1024) + " MB");
}
function checkFileSizeIE()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size/(1024*1024);
alert(size + "MB");
}
</script>
<form action="" method="get" accept-charset="utf-8" name="upload">
<input type="file" name="file" value="" id="file">
<p><input type="submit" value="Continue →" onclick="checkBrowser()"></p>
</form>
<div id="example"></div>
- 1. Cách lưu tệp ở phía máy khách bằng JavaScript?
- 2. xử lý ảnh ở phía máy khách
- 3. Phát hiện kích thước tải lên tệp ở phía máy khách?
- 4. Cách xác thực biểu mẫu Symfony 2 ở phía máy khách (javascript)
- 5. Xác thực người dùng G + ở phía máy chủ, sau khi đăng nhập phía máy khách
- 6. Thực hiện xác thực Facebook: Phía máy khách và phía máy chủ
- 7. ASP.Net 4.5 Twitter Bootstrap và Xác thực Phía Máy khách
- 8. Cách tạo tệp văn bản cục bộ ở phía máy khách bằng JavaScript/JQuery
- 9. Làm cách nào để tạo tệp để lưu trữ ở phía máy khách bằng JavaScript?
- 10. Kiểm tra chéo trên kích thước tệp ở phía máy khách trước khi tải lên máy chủ?
- 11. ASP.NET: Đồng bộ hóa quy tắc xác thực phía máy khách và phía máy chủ
- 12. Cách chuyển mảng từ phía máy chủ Asp.net sang hàm Javascript ở phía máy khách
- 13. Xác thực phía máy khách tùy chỉnh ASP.Net
- 14. Làm cách nào để xuất trang html sang pdf ở phía máy khách bằng JavaScript hoặc jQuery?
- 15. Xác nhận hợp lệ JSR 303 + Xác thực phía máy khách Javascript
- 16. Lỗi khi ghi nhật ký javascript ở phía máy khách
- 17. Vì vậy, có an toàn để xác thực biểu mẫu ở phía máy khách không?
- 18. Chấp nhận MongoDB ở phía máy khách bằng cách sử dụng JavaScript
- 19. RegisterOnSubmitStatement sau khi xác thực phía máy khách
- 20. Khách hàng Kiểm tra kích thước tệp bằng HTML5?
- 21. Xác thực phía khách hàng của Grails
- 22. Thay đổi thông báo lỗi cho trình xác thực tùy chỉnh ASP.NET bằng javascript (xác thực phía máy khách)?
- 23. Tại sao chính xác là hiển thị HTML phía máy chủ nhanh hơn phía máy khách?
- 24. Thực thi tập lệnh treo ở phía máy khách
- 25. CXF 2.2.12: Cách tắt tính năng xác thực lược đồ ở phía máy khách
- 26. Xác định kích thước tệp hình ảnh + kích thước qua Javascript?
- 27. Đọc nội dung tệp ở phía máy khách trong javascript trong các trình duyệt khác nhau
- 28. Làm cách nào để sử dụng quy tắc xác thực trên cả phía máy khách và phía máy chủ?
- 29. xác thực thông thạo khi ở phía khách hàng
- 30. Có thể thay đổi kích thước hình ảnh (phía máy khách) trên biểu mẫu html trước khi tải lên không?
+1 Tôi không biết điều đó - đã xóa bài đăng của tôi. – Amarghosh
+1 Trong khi đây là một cách tiếp cận tốt (sử dụng Javascript mà câu hỏi ban đầu là về), bạn thực sự chỉ cần thực hiện một giải pháp cho hai trình duyệt. Tất nhiên, đây là hai trong số các trình duyệt phổ biến nhất, nhưng nếu bạn cần hỗ trợ nhiều trình duyệt/nền tảng, nó có thể khá khó thực hiện. –
Javascript không thể thay thế để kiểm tra kích thước tệp trên máy chủ. Nếu mục tiêu đơn giản là tiết kiệm một số tài nguyên, thì mục tiêu đó là có thể, tôi nghĩ vậy. – Breton