2008-09-08 29 views

Trả lời

0

Một ví dụ tốt về thực hiện điều này mà không sử dụng Ajax được cung cấp at CodeProject by Nilesh Thakkar.

+1

Đó là một thanh tiến trình dummy. Không hiển thị% phần trăm được tải lên. Cũng có thể sử dụng thông báo "tải lên ..." dưới dạng lớp phủ. – krishna

14

Nếu bạn quan tâm đến việc tất cả điều này thường hoạt động như thế nào đối với khách hàng, thì đây là:

Tất cả các giải pháp nối biểu mẫu qua javascript và thay đổi các biểu mẫu nhắm mục tiêu thành IFRAME mới được tạo ra. Sau đó, họ được tự do sử dụng AJAX để yêu cầu một số trạng thái về tệp từ máy chủ.

Bí quyết IFRAME là cần thiết vì tất cả các tập lệnh chạy trong cửa sổ đang thực hiện quá trình tải lên sẽ bị treo cho đến khi yêu cầu được hoàn tất vào thời điểm tệp được tải lên hoàn toàn.

+0

IFRAME có thực sự cần thiết không? Ai đó có thể xác nhận điều này? Tôi bị bối rối. –

+6

Có, cần có IFRAME. Bạn không thể gửi tệp tải lên qua AJAX (tức là thông qua đối tượng Javascript XMLHTTPRequest) và chỉ cần gửi biểu mẫu bình thường sẽ ngăn bạn thực thi Javascript bổ sung để thăm dò ý kiến ​​máy chủ để tiến hành tải lên. – georgebrock

2

Tôi đã thử nhiều kỹ thuật và thành công nhất với SWFUpload.

Bạn tạo và tương tác với đối tượng SWFUpload bằng Javascript, nhưng sử dụng tệp Flash (ẩn) để chọn tệp, tải lên và tải lên tiến trình giám sát. Bạn có thể chỉ định một loạt các trình xử lý sự kiện Javascript (uploadStarted, uploadProgress, uploadError, v.v.) mà Flash sẽ gọi trong quá trình tải lên khiến cho nó rất linh hoạt. Nó cũng thực hiện một hàng đợi tập tin, do đó, nó hoạt động tốt cho một hoặc nhiều tập tin.

Links:

Các vấn đề liên quan