2008-11-12 32 views
11

Tôi đã thực hiện một chút nghiên cứu để tìm thành phần tải lên cho .NET mà tôi có thể sử dụng để tải lên các tệp lớn, có thanh tiến trình và có thể tiếp tục tải lên tệp lớn. Tôi đã gặp một số thành phần như AjaxUploader, SlickUploadPowUpload, để đặt tên một vài thành phần. Mỗi tùy chọn này đều tốn tiền và chỉ PowUpload thực hiện tải lên có thể tiếp tục lại, nhưng nó thực hiện với một applet java. Tôi sẵn sàng trả tiền cho một thành phần mà làm những điều đó tốt, nhưng nếu tôi có thể viết nó bản thân mình đó sẽ là tốt nhất.Tải lên các tệp lớn trong .NET

Tôi có hai câu hỏi:

  1. Có thể khôi phục một tập tin tải lên trên máy khách mà không sử dụng flash/java/Silverlight?
  2. Có ai có một số mã hoặc liên kết đến bài viết giải thích cách viết .NET HTTPHandler cho phép tải lên trực tuyến và thanh tiến trình ajax không?

Cảm ơn bạn,
Austin

[Chỉnh sửa]

tôi nhận ra tôi cần để có thể làm tập tin tải lên Resumable cho dự án của tôi, bất cứ đề nghị cho các thành phần có thể làm điều đó ?

Trả lời

6

1) Có thể tiếp tục tải lên tệp trên máy khách mà không cần sử dụng flash/java/Silverlight không?

Không. Giao thức HTTP thực không hỗ trợ tiếp tục tải lên một phần, vì vậy ngay cả khi bạn đã sử dụng đèn flash hoặc đèn bạc, bạn vẫn cần phải sử dụng một thứ khác như FTP trên máy chủ.
Tôi đã "giải quyết" vấn đề này trong quá khứ bằng cách viết một ứng dụng khách tùy chỉnh trong C#, chia nhỏ tệp thành các phần nhỏ (2meg), truyền riêng chúng và sau đó máy chủ kết hợp chúng lại với nhau.

2) Có ai có một số mã hoặc liên kết đến bài viết giải thích cách viết .NET HTTPHandler cho phép tải lên luồng và thanh tiến trình ajax không?

Trong khi điều này không giải quyết được vấn đề 'tiếp tục', tôi đã sử dụng SWFUpload ở phía máy khách và nó hoạt động rất tốt. Nó cung cấp một trình duyệt tệp thông minh (nơi bạn có thể nhắc người dùng chỉ cho các tệp jpeg, v.v.) và tải lên tiến trình theo dõi, tất cả mà không cần sửa đổi máy chủ của bạn cả.

+0

Bạn có thể tạo ứng dụng khách Silverlight giống như ứng dụng C# của bạn? Sau khi người dùng chọn tải lên, chia nhỏ và gửi riêng các phần đó? Vì vậy, về mặt kỹ thuật, có thể ở Silverilight đúng không? – TJB

+1

Chắc chắn, bạn có thể làm điều đó. Phần cứng không phải là mặt của khách hàng, nó đang đàm phán với máy chủ để tìm hiểu xem có bao nhiêu khối 2 megabyte đã được tải lên trước đó và theo dõi tất cả những thứ đó –

+0

Một giải pháp thay thế (cũng không giải quyết được lý lịch vấn đề) là mô-đun tải lên ASP.NET của Darren Johnson cho IIS. Thao tác này sẽ thực hiện tải lên bằng thanh tiến trình mà không cần Flash, Java hoặc Silverlight: http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/ – Cocowalla

4

Không thể tiếp tục tải lên bằng cách sử dụng điều khiển nhập tệp HTML chuẩn, vì toàn bộ tệp được gửi cùng với yêu cầu HTTP.

Tôi đã sử dụng NeatUpload trong quá khứ, cung cấp cho bạn thanh tiến trình. Nó thuộc giấy phép LGPL, vì vậy bạn không cần phải trả tiền cho nó và nó là nguồn mở.

0

Không có gì thêm để thêm về sự cố tiếp tục. Tôi đã sử dụng (và tiếp tục sử dụng) telerik radUpload và tôi khá hài lòng với nó (thậm chí nó có thể được sử dụng ở chế độ tin cậy trung bình khá quan trọng đối với tôi). Vấn đề duy nhất tôi có (và không thể sửa) là tải lên các tệp lớn hơn 2GB ...

+0

Có nghĩa là 2MB thay vì 2GB? Nếu vậy, thì đó là do thiết lập maxrequestlength trong web.config – Spongeboy

0

SlickUpload khá vững chắc và rất nhiều công ty lớn sử dụng nó từ những gì the site nói.

0

Đây có thể là quá muộn cho dự án của bạn, nhưng POW Upload hiện đã triển khai tự động tiếp tục tải lên trong phiên bản mới của họ. Chúng tôi sắp triển khai nó trên trang web của mình.

+0

Được rồi, cảm ơn bạn đã cập nhật. – Austin

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