2008-08-15 53 views
5

Về cơ bản, một cái gì đó tốt hơn thế này:Cách tốt nhất để tải lên tệp qua HTTP POST bằng biểu mẫu web là gì?

<input type="file" name="myfile" size="50"> 

Trước hết, nút browse trông khác nhau trên mọi trình duyệt. Không giống như nút submit trên biểu mẫu, bạn phải đưa ra một số cách hack-y để tạo kiểu cho nó.

Thứ hai, không có chỉ báo tiến trình nào cho biết số lượng tệp đã tải lên. Bạn thường phải triển khai một số loại phương thức phía khách hàng để vô hiệu hóa nhiều lần gửi (ví dụ: thay đổi nút gửi thành nút bị vô hiệu hiển thị "Đang gửi biểu mẫu ... vui lòng chờ") hoặc nhấp nháy cảnh báo khổng lồ.

Có giải pháp nào tốt cho việc này không sử dụng Flash hoặc Java không?

Yaakov: Sản phẩm đó chính xác là những gì tôi đang tìm kiếm, nhưng chi phí là $ 1000 và cụ thể cho ASP.NET. Có bất kỳ dự án mã nguồn mở nào có chức năng giống hoặc tương tự không?

Trả lời

9

Hộp tải lên tệp là nơi chúng tôi hiện đang ở nếu bạn không muốn liên quan đến các công nghệ khác như Flash, Java hoặc ActiveX.

Với HTML thuần túy, bạn bị giới hạn khá nhiều đối với trải nghiệm bạn đã mô tả (không có thanh tiến trình, hai lần gửi, v.v ...). Nếu bạn sẵn sàng sử dụng một số javascript, bạn có thể giải quyết một số vấn đề bằng cách đưa ra phản hồi rằng quá trình tải lên đang diễn ra và thậm chí showing the upload progress (đó là một hack vì bạn không phải thực hiện toàn bộ chuyến đi đến máy chủ và trở lại, nhưng ít nhất nó hoạt động).

Nếu bạn sẵn sàng sử dụng Flash (có sẵn ở mọi nơi và trên nhiều nền tảng), bạn có thể khắc phục khá nhiều vấn đề này. Một googling nhanh chóng bật lên twosuch thành phần, cả hai thành phần này đều miễn phí nguồn mở. Tôi không bao giờ sử dụng bất kỳ cái nào trong số họ, nhưng chúng trông rất đẹp. BTW, Flash không phải là không có vấn đề của nó, ví dụ: khi sử dụng trình tải lên nhiều tệp cho bản trình chiếu, trình duyệt liên tục bị treo trên tôi :-(

Có lẽ giải pháp tốt nhất hiện nay là phát hiện động nếu người dùng có flash, và nếu đó là trường hợp, cho cô ấy những phiên bản flash của người tải lên, trong khi vẫn làm cho nó có thể chọn HTML cơ bản một.

HTH

0

Điều đó đúng, điều khiển tải tệp lên chắc chắn là sau thời gian. Hy vọng rằng điều này sẽ được giải quyết trong một phiên bản asp.net trong tương lai.

Mặc dù chi phí một số tiền, tôi đã tìm thấy Telerik upload control để có tất cả chức năng mà bạn đang tìm kiếm, bao gồm cả cập nhật về kiểu và tiến trình (nó cũng tối ưu bộ nhớ để tải lên lớn).

1

Bạn có thể có một cái nhìn tại Fancy Upload kịch bản. Mặc dù nó sử dụng flash nó vẫn trông tuyệt vời.

1

Vấn đề ở đây là b rowsers cụ thể làm việc để chặn bất cứ điều gì thay đổi điều khiển đầu vào tải lên tệp cơ bản. Bạn không thể thay đổi nó bằng javascript chẳng hạn.

Lý do là bảo mật - nếu tôi có thể viết mã, tôi có thể xây dựng trang khi bạn truy cập nó gửi cho tôi nhiều tệp khác nhau từ đĩa cứng của bạn. Không hay.

Có nhiều cách giải quyết khác nhau vào lúc này, nhưng chúng khác nhau giữa IE và FX (Tôi không biết về Safari, Opera, v.v.).

Nhìn vào những gì http://www.gmail.com thực hiện trong IE và FX khi bạn đính kèm một thứ gì đó vào e-mail.

Tôi muốn thấy nút "Duyệt" rác đó - nó cho tôi biết rằng tôi không để bất cứ điều gì bất ngờ xảy ra.

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