2012-09-07 11 views
5

मैं अपने प्रोजेक्ट एक पेज DownloadDocument.aspx में है और यह codebhind DownloadDocument.aspx.csASP.NET एक HttpHandler जोड़ने डाउनलोड की गई फ़ाइल का नाम संपादित करने

मेरी DownloadDocument.aspx में है मैं एक लंगर जो इस तरह एक गतिशील लिंक ले:

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

मैं फ़ाइल नाम डाउनलोड करने के लिए एक प्रेजेंटफैंडर जोड़ना चाहता हूं, मैं इसे कैसे कर सकता हूं? अग्रिम में धन्यवाद।

उत्तर

16

साथ कोशिश कर सकते हैं ए का उपयोग करने के बारे में कैसे इसके लिए जेनेरिक हैंडलर (.ashx)?

आपको फ़ाइल नाम, सामग्री प्रकार और सामग्री जैसे लोडिंग विशिष्ट जानकारी जोड़ने की आवश्यकता है। नमूना आपको एक अच्छा हेडस्टार्ट देना चाहिए।

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; 
     } 
    } 
} 

सामान्य हैंडलर किसी URL से कहा जाता है, इस तरह:

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

यह उस फ़ाइल के प्रकार पर निर्भर करता है जिसे आप डाउनलोड करने का प्रयास कर रहे हैं ... क्योंकि प्रत्येक अनुरोध HTTPHandler के ProcessRequest के माध्यम से चला गया है। और यह प्रत्येक अनुरोध को एक-एक करके जांचता है .. आपको अपनी परियोजना में HTTPHandler जोड़ने की आवश्यकता है और इसे web.config में इस तरह कुछ जोड़ने की आवश्यकता है।

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

यह हर Image प्रकार के लिए आपके अनुरोध की जाँच करेगा .. path विशेषता में उल्लेख किया

संपादित करें:

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

मैं इसे किसी भी फाइल extention – Vervatovskis

+0

देखना संपादित खंड ... यह आपके डाउनलोड पृष्ठ के लिए अपने हैंडलर रजिस्टर करेंगे समर्थन करना चाहते हैं, फ़ाइल प्रकारों के बावजूद प्रत्येक अनुरोध के लिए .. –

+0

मायांक का बहाना, इस प्रकार मैंने केवल हैंडलर नाम या हैंडलर का पूरा पथ रखा है (मैं .NET पर्यावरण में नया हूं) – Vervatovskis

0

आप इस कोड

<httpHandlers> 
    <add 
    verb="POST" 
    path="*.jpg,*.jpeg,*.bmp,*.tif,*.tiff" 
    type="YourHandler" /> 
</httpHandlers> 
संबंधित मुद्दे