ठीक है, मैं एक पुराने आवेदन मैं था में जाँच की और यहाँ एक नमूना है। आपको अनुकूलित करने की आवश्यकता होगी लेकिन विचार यहां है। यह पहला भाग एक अनुरोध इंटरसेप्टर विशेषता का हिस्सा है जो WebMethod
पर रखा गया है। संपूर्ण इंटरसेप्टर काफी जटिल है क्योंकि यह कई मामलों का प्रबंधन करता है।
int byteSize = 262144;
byte[] data = new byte[byteSize];
if (!String.IsNullOrEmpty(myfileName))
{
_context.Response.AddHeader("Content-disposition", "attachment; filename=\"" + myfileName+ "\"");
}
_context.Response.ContentType = DefaultContentType;
_context.Response.Cache.SetCacheability(HttpCacheability.Private);
_context.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(1));
_context.Response.Buffer = false;
_context.Response.BufferOutput = false;
_context.Response.AddHeader("Content-length", myStreamSize.ToString());
try
{
int counter = 0;
int bytesRead = mystream.Read(data, 0, byteSize);
while ((long)counter < myStreamSize|| bytesRead > 0)
{
counter += bytesRead;
if (bytesRead < byteSize)
{
byte[] outBuf = new byte[bytesRead];
Array.Copy(data, outBuf, bytesRead);
_context.Response.BinaryWrite(outBuf);
}
else
{
_context.Response.BinaryWrite(data);
}
bytesRead = mystream.Read(data, 0, byteSize);
}
}
finally
{
mystream.Close();
mystream.Dispose();
}
_context.Response.End();
क्लाइंट पक्ष पर जावास्क्रिप्ट में यह दूसरा हिस्सा है। हमने jQuery के बजाय ExtJS का उपयोग किया।
downloadFile: function(url, getArgs) {
if(!this.iframe)
{
this.iframe = document.createElement("iframe");
this.iframe.className = "x-hidden";
document.body.appendChild(this.iframe);
}
var args = Ext.urlEncode(getArgs);
url = url + (args ? ("?" + args) : "");
this.iframe.src = url;
}
एक बटन क्लिक इस फ़ंक्शन को कॉल करें और यह यूआरएल WebMethod को पारित करने के लिए अतिरिक्त तर्क दे सकते हैं और अंत में होगा। जेएस पक्ष पर विचार एक छुपा आईफ्रेम बनाना है जो यूआरएल लेगा और फिर उपयोगकर्ता को डाउनलोड करने के लिए संकेत देगा।
मुझे आशा है कि यह पता करने में मदद करता
स्रोत
2012-11-27 13:16:08
अनुरोध हेडर में आप किस प्रकार की जानकारी जोड़ रहे हैं, इसे पुराने तरीके से करने की आवश्यकता है? प्रतिक्रिया के बारे में, आप बस 'प्रतिक्रिया' क्लीयर() जैसे कुछ के साथ जो चाहते हैं उसे वापस भेजें। Response.ContentType = "एप्लिकेशन/टेक्स्ट"; Response.ContentEncoding = _ex.Encoding; Response.AddHeader ("सामग्री-स्वभाव", स्ट्रिंग.फॉर्मैट ("अनुलग्नक; फ़ाइल नाम = {0}", _ex.FileName)); प्रतिक्रिया। बाइनरीवाइट (_ex.Output); Response.End(); ' –
[यह] (http://stackoverflow.com/questions/24501358/how-to-set-a-header-for-a-http-get-request-and-trigger-file -डाउनलोड/24523253 # 24523253) एक सटीक डुप्लिकेट प्रश्न नहीं है, लेकिन विशेष रूप से अनुरोधों के लिए है, लेकिन उत्तर उपयोगी हो सकते हैं। –