Không có giải pháp JavaScript cho lựa chọn trình duyệt đó. Có File API nhưng trong khi nó hoạt động trong phiên bản Firefox và Chrome mới hơn, nó sẽ không xảy ra trong IE (không có dấu hiệu của nó trong bản beta IE9 nào cả).
Trong mọi trường hợp, đọc tệp cục bộ và tải tệp lên qua XMLHttpRequest không hiệu quả vì XMLHttpRequest không có khả năng gửi nhị phân thuần túy, chỉ văn bản Unicode. Bạn có thể mã hóa nhị phân thành văn bản bằng cách sử dụng cơ sở 64 (hoặc, nếu bạn thực sự chuyên dụng, mã hóa 7 bit tùy chỉnh của riêng bạn) nhưng điều này sẽ kém hiệu quả hơn việc tải lên tệp thông thường.
Bạn chắc chắn có thể tải lên bằng Flash (xem SWFUpload et al), hoặc thậm chí Java nếu bạn phải (Jumploader ... Tôi sẽ không bận tâm, những ngày này), vì tỷ lệ Flash rất cao và plugin Java tiếp tục giảm). Bạn sẽ không nhất thiết phải kiểm soát mức độ thấp để chia thành nhiều phần, nhưng bạn có thực sự cần điều đó không? Để làm gì?
Một cách tiếp cận khác có thể là sử dụng trường tải lên tệp HTML tiêu chuẩn và khi gửi xảy ra, hãy đặt một cuộc gọi khoảng để thăm dò ý kiến máy chủ với XMLHttpRequest, hỏi xem tệp tải lên có xa bao lâu không. Điều này đòi hỏi một chút công việc ở cuối máy chủ để lưu trữ tiến độ tải lên hiện tại trong phiên hoặc cơ sở dữ liệu, vì vậy một yêu cầu khác có thể đọc nó. Nó cũng có nghĩa là sử dụng một thư viện phân tích biểu mẫu cung cấp cho bạn tiến trình gọi lại, mà hầu hết các ngôn ngữ chuẩn được tích hợp sẵn như PHP không.
Bất kể bạn làm gì, hãy tiếp cận phương pháp "nâng cao tiến bộ", cho phép các trình duyệt không có hỗ trợ để quay lại tải lên HTML thuần túy. Các trình duyệt thường có thanh tiến trình tải lên để tải lên tệp HTML, nó chỉ có xu hướng nhỏ và dễ bị bỏ qua.
Điều này có thể xảy ra ở cả Flash và Java, nhưng tại sao? Điều này có ý nghĩa gì? Bạn có muốn bỏ qua các giới hạn về kích thước không? –
Đây là một câu hỏi tương tự khác: http://stackoverflow.com/questions/3155587/how-to-zip-100-mb-files-during-before-upload-so-that-upload-speed-can-be-increa/ 3155613 # 3155613 – RyanW
Tôi chủ yếu khám phá tùy chọn này để tránh phải xử lý các tệp máy chủ lớn bên. Nội dung của các tệp được tải lên sẽ cần phải được phân tích cú pháp và được lưu trữ trong một DB. Đối với một lượng lớn dữ liệu cùng một lúc, chúng tôi cần một nhóm chuyên dụng các chuỗi dài tồn tại ở đầu trước để chuyển tất cả dữ liệu, có thể là dịch vụ phụ trợ đầu tiên qua RPC và sau đó là chính DB. Sau đó, sẽ có vấn đề về xử lý dọn dẹp tệp, thử lại, máy chủ giao diện người dùng bị lỗi, quản lý bộ nhớ và v.v. Tất cả điều này là khả thi, nhưng nếu nó có thể được thực hiện ở phía khách hàng, tôi có thể nhận được giải pháp ra khỏi cửa nhanh hơn nhiều. –