2012-09-07 34 views
5

tôi có trong dự án của tôi một trang DownloadDocument.aspx và nó codebhind là DownloadDocument.aspx.csASP.NET thêm một HttpHandler để chỉnh sửa tên tập tin tải về

Trong DownloadDocument.aspx của tôi tôi có một neo mà mất một liên kết động như thế này:

<a id="downloadLink" runat="server" style="margin:5px" 
href="<%# CONTENT_DIRECTORY_ROOT + document.Path %>">Download current file</a> 

Tôi muốn thêm người thông báo để kiểm soát tên tệp đã tải xuống, Tôi có thể làm như thế nào? Cảm ơn trước.

Trả lời

16

Cách sử dụng xử lý chung (.ashx) cho điều này?

Bạn cần thêm thông tin tải cụ thể, như tên tệp, contenttyp và nội dung. Các mẫu nên cung cấp cho bạn một headstart tốt.

public class GetDownload : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     if (!string.IsNullOrEmpty(context.Request.QueryString["IDDownload"])) 
     { 
       context.Response.AddHeader("content-disposition", "attachment; filename=mydownload.zip"); 
       context.Response.ContentType = "application/octet-stream"; 
       byte[] rawBytes = // Insert loading file with IDDownload to byte array 
       context.Response.OutputStream.Write(rawBytes, 0, rawBytes.Length); 
     } 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

Việc xử lý chung được gọi từ một URL, như thế này:

<a href="/GetDownload.ashx?IDDownload=1337">click here to download</a> 
3

tùy thuộc vào loại tệp bạn đang cố gắng tải xuống ... bởi vì mọi yêu cầu đều đi qua HTTPHandler 's ProcessRequest. và nó sẽ kiểm tra từng yêu cầu từng người một. Bạn cần thêm bất kỳ HTTPHandler vào dự án của mình và cần phải thêm một cái gì đó như thế này vào số web.config của mình.

<httpHandlers> 
    <add path="*.jpg,*.jpeg,*.bmp,*.tif,*.tiff" verb="*" type="NameofYourHandler" /> 
</httpHandlers> 

này sẽ kiểm tra theo yêu cầu của bạn cho mỗi Image loại .. nêu tại path thuộc tính

Edit:

<add verb="*" path="*DownloadDocument.aspx " type="NameofYourHandler"/> 
+0

tôi muốn nó để hỗ trợ bất kỳ tập tin gia hạn – Vervatovskis

+0

thấy chỉnh sửa phần ... điều này sẽ đăng ký xử lý của bạn cho trang tải về của bạn, cho mọi yêu cầu bất kể loại tệp nào .. –

+0

lý do Mayank, trong loại i chỉ cần đặt tên trình xử lý hoặc đường dẫn đầy đủ của trình xử lý (tôi mới trong môi trường .NET) – Vervatovskis

0

Bạn có thể thử với mã này

<httpHandlers> 
    <add 
    verb="POST" 
    path="*.jpg,*.jpeg,*.bmp,*.tif,*.tiff" 
    type="YourHandler" /> 
</httpHandlers> 
Các vấn đề liên quan