2009-08-09 14 views
5

Xác thực phía khách hàng là điều quan trọng để cải thiện khả năng sử dụng.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ủ?

Có cách nào để duyệt qua kích thước tệp trước khi tải lên máy chủ hay không. Tôi đang sử dụng kiểm soát tải lên tập tin asp.net.

Tôi tìm thấy một số điều khiển của bên thứ ba làm điều đó kiểm tra:

http://ajaxuploader.com/Demo/simple-upload.aspx

http://demo.essentialobjects.com/Default.aspx?path=AJAXU

nhưng như thế nào?

+1

Các điều khiển bạn đã tìm thấy đều sử dụng flash :) nhìn vào js. Họ nhúng các tập tin swf. – redsquare

Trả lời

4

Trước đây, cách duy nhất để xác định kích thước tệp trước khi tệp được gửi qua máy chủ là có các plugin/tiện ích bổ sung 'dày hơn javascript' phía máy khách. Đây sẽ phải được cài đặt trên hệ thống khách hàng. Ví dụ. sử dụng SWFUpload, Java applet, điều khiển ActiveX.

Bây giờ, bạn có thể sử dụng File API HTML5, tức là .:

var size = document.getElementById('myfile').files[0].size; 
+0

trông giống như một bản sao câu trả lời của tôi! – redsquare

+0

@redsquare, tôi đã thêm "swfupload" của bạn làm một trong các ví dụ. +1 cho điều đó. :-) –

+0

@ o.k.w bạn có thể đăng một mã mẫu không? –

4

này bây giờ có thể với API file HTML5 của:

<script> 
    var myFile = document.getElementById('myFile'); 
    var size; 
    myFile.addEventListener('change', function() { 
     size = this.files[0].size; 
    }); 
</script> 

này được hỗ trợ bởi most of the latest browsers.

Internet Explorer hỗ trợ this workaround liên quan đến ActiveX, nhưng nó yêu cầu hạ thấp cài đặt bảo mật của Internet Explorer, vì vậy nó không thực sự là một tùy chọn cho hầu hết các ứng dụng.

Cần nhiều công việc hơn, nhưng sử dụng trình tải lên dựa trên Flash như SWFUpload nếu bạn thực sự cần thực hiện việc này trong IE9 trở xuống. IE10 sẽ (hy vọng) thêm hỗ trợ cho API tệp HTML5.

+0

Giải pháp IE có thể được tóm tắt là: "Tắt tất cả bảo mật và nhận PC được sở hữu ngay lập tức.) IE10 cung cấp API tệp HTML5. – EricLaw