2009-04-28 30 views
20

Tôi có một bảng điều khiển cập nhật, trong bảng điều khiển cập nhật Tôi đã FileUpload kiểm soát và điều khiển nút, Mở nút nhấp chuột, tôi cần các tập tin mà tôi đã tải lên trong sự kiểm soát FileUpload trong updatepanel.upload File trong AJAX UpdatePanel mà không đầy đủ postback

Kịch bản chính xác, tôi có 8 tab trên trang, mỗi tab chứa quá nhiều thông tin, Một trong các tab là Tệp đính kèm, khi người dùng nhấp vào Thêm tệp đính kèm phương thức mới được hiển thị, Phương thức chứa detailsview trong Updatepanel và trong detailsview tôi có điều khiển tải lên tập tin, khi người dùng nhấn lưu nút, xem chi tiết sự kiện chèn được kích hoạt, trong sự kiện chèn, tôi cần tệp mà tôi đã tải lên.
Xin lưu ý, Trang của tôi nặng và tôi không muốn đăng đầy đủ.


Có ai có giải pháp về vấn đề này không?

Cảm ơn trước vì sự giúp đỡ của các bạn .....

Trả lời

36

Để giải quyết vấn đề này, vui lòng xem bước sau.

  1. Thêm ajax-tải lên chế độ xem chi tiết của bạn.
    • trình tải lên dựa trên iframe như tài nguyên # 1.
    • Silverlight dựa trên & dựa trên Flash tải lên. Tôi thích kỹ thuật này vì nó không yêu cầu bất kỳ kịch bản phía máy chủ nào để hiển thị trạng thái tải lên hiện tại. Nhưng trong HTML5, bạn có thể tạo điều này mà không cần sử dụng bất kỳ plugin trình duyệt web nào.
    • Trình tải lên thương mại như Tài nguyên số 2. sử dụng iframe ẩn để tải lên.
  2. Tải tệp lên vị trí tạm thời.

    • Hệ thống phản hồi vị trí tạm thời. Tiếp theo, khách hàng giữ vị trí tạm thời trong mục nhập ẩn dưới dạng chi tiết.
    • Giữ vị trí tạm thời với session_id. Bạn có thể lưu trữ nó trong cơ sở dữ liệu hoặc biến Session phụ thuộc vào khung của bạn.
  3. Khi bạn click vào nút lưu, hệ thống sẽ di chuyển các tập tin đến vị trí thực sự của họ

Note. Hệ thống sẽ tự động xóa các tập tin đã hết hạn từ vị trí tạm thời.

Resource

  1. ASP.NET File Upload with Real-Time Progress Bar
  2. ASP.NET File Upload like GMail (Commercial)

Cập nhật

Sau gần một năm, tôi chỉ tìm thấy một lớn thứ 3 bên kiểm soát cho câu hỏi này. Đây là một trình cắm thêm nguồn mở của jQuery. Nó đặt tên Plupload cho phép bạn tải lên các tệp bằng HTML5, Silverlight, Flash hoặc các biểu mẫu bình thường và nó cung cấp một số tính năng độc đáo như tiến trình tải lên, thay đổi kích thước hình ảnh và tải lên chunked.

You can try & test Plupload by click here.

+1

Câu trả lời hay. Tôi muốn upvote ... nhưng tôi chạy ra ngoài cho ngày hôm nay !! Ai đó cho anh chàng này một +1. – jrista

+0

Những gì anh ta đang làm đặt điều khiển tải lên tệp trên một trang khác và trên biểu mẫu tệp đính kèm, lấy IFRAME và đặt trang điều khiển tải lên tệp nguồn. Trên trang điều khiển tải lên tập tin AsyncPostBack, hãy đăng lại và tải lên tệp đính kèm .... Nhưng tôi có Kịch bản khác ở đây Giống như tôi đã đề cập trong câu hỏi của mình, tôi có detailsview và trong detailview tôi có quyền kiểm soát tệp và thông tin khác, Khi người dùng nhấn nút lưu Tôi cần thông tin nhị phân của hình ảnh trên cùng một trang thay vì khác, Bằng cách đó không phải là giải pháp trong kịch bản của tôi .... Cảm ơn bạn đã trả lời –

+0

loại giải pháp này tôi đã implered mình sớm, nhưng sẽ không giúp đỡ trong kịch bản của tôi. –

4

Không thể thực hiện được nếu không có các tệp nhị phân hợp tác đang được cài đặt trên máy khách. Không có cơ chế an toàn cho một khuôn khổ AJAX để đọc nội dung của một tệp và do đó có thể gửi nó đến máy chủ. Trình duyệt hỗ trợ mà chỉ như một hình thức bài nhiều phần dữ liệu từ một hộp tập tin đầu vào.

+0

cảm ơn trả lời nhanh Có mẹo nào hay làm việc xung quanh để đạt được điều này? –

+0

Không có lừa hoặc làm việc xung quanh, thats điểm an toàn nó sẽ không được an toàn là có một vòng làm việc. Hãy xem xét những thứ mà một coder độc hại có thể thực hiện nếu một vòng làm việc như vậy tồn tại sau đó bạn nhận ra tại sao loại thứ này bị chặn lại. – AnthonyWJones

0

Các trang web mà bạn nhìn thấy mà cung cấp chức năng này thường sử dụng flash hoặc một iframe để postback xảy ra trong iframe và đưa ra những ảo ảnh của một yêu cầu ajax.

HTH

Oneshot

+0

nếu bạn sử dụng IFrame, thông tin tệp được tải lên sẽ chỉ có sẵn trong nguồn trang IFrame –

+0

nhưng tôi không có kịch bản như thế này, tôi đã thử giải pháp này. –

1

Vấn đề là với cách thức hoạt động của kiểm soát tập tin HTML tải lên, không có gì để làm với ASP.net, cho sự kiểm soát tập tin tải lên để làm việc bạn cần một bài đầy đủ của dữ liệu biểu mẫu. Bạn chỉ có thể mô phỏng rằng bạn không thực hiện đăng đầy đủ, bằng cách thực hiện tất cả hoạt động trong iframe ẩn thực hiện việc tải lên thực tế

+0

Có thể bạn cần cung cấp thêm thông tin để nhận được nhiều phiếu bầu hơn, nhưng cách bạn mô tả về cơ bản là cách các trang web như GMail thực hiện tải lên Ajax của họ. – Craig

0

Tôi đã thử swfupload (http://swfupload.org/), nhưng hãy nhớ rằng bạn phải nhảy thông qua hoops nếu bạn đang sử dụng xác thực biểu mẫu với trình duyệt không phải của IE. Đây rõ ràng là một lỗi flash, và nó không cố định trong flash 10. Tôi quyết định không sử dụng nó trong khuôn khổ của chúng tôi vì lỗi này, nhưng nếu không nó là một sản phẩm tuyệt vời.

0

Tôi khuyên bạn nên sử dụng tiện ích tải lên từ YUI. Xem http://developer.yahoo.com/yui/uploader/

Tôi nghĩ bạn có thể sử dụng nó để đạt được mục tiêu của mình. Javascript của bạn sẽ cần tìm nạp tệp xuống máy khách từ máy chủ sau khi hoàn thành quá trình tải lên. Nhưng trang sẽ không làm mới - tải lên thông qua flash và khung nội tuyến ẩn. Tải xuống để hiển thị nội dung của tệp cho người dùng sẽ thông qua ajax.

Nếu người dùng không "phê duyệt" nội dung tải lên, thì chỉ cần thực hiện một cuộc gọi ajax khác tới máy chủ để xóa tệp.

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