निश्चित रूप से, आप यह कर सकते हैं। RESTful file uploads with HttpWebRequest and IHttpHandler देखें। मैं कुछ वर्षों से इस विधि का उपयोग कर रहा हूं और ऐसी साइट है जिसे कम से कम कई गीगाबाइट की फाइलों के साथ परीक्षण किया गया है। अनिवार्य रूप से, आप अपना खुद का IHttpHandler बनाना चाहते हैं, जो इसे लगता है उससे आसान है।
संक्षेप में, आप एक कक्षा बनाते हैं जो IHttpHandler इंटरफ़ेस लागू करता है, जिसका अर्थ है कि आपको IsReusable संपत्ति और ProcessRequest विधि का समर्थन करना है। इसके शीर्ष पर, आपके web.config में मामूली परिवर्तन होता है, और यह एक आकर्षण की तरह काम करता है। इस चरण में अनुरोध के जीवन चक्र में, अपलोड की जाने वाली पूरी फ़ाइल को स्मृति में लोड नहीं किया जाता है, इसलिए यह स्मृति समस्याओं से बाहर कदम उठाता है।
ध्यान दें कि web.config में,
<httpHandlers>
<add verb="*" path="DocumentUploadService.upl" validate="false" type="TestUploadService.FileUploadHandler, TestUploadService"/>
</httpHandlers>
फ़ाइल संदर्भित, DocumentUploadService.upl, वास्तव में मौजूद नहीं है। यह एक वैकल्पिक विस्तार देने के लिए है ताकि अनुरोध मानक हैंडलर द्वारा अवरुद्ध नहीं किया जा सके। आप अपने फ़ाइल अपलोड फॉर्म को उस पथ पर इंगित करते हैं, लेकिन फिर आपकी FileUploadHandler क्लास में प्रवेश करता है और वास्तव में फ़ाइल प्राप्त करता है।
अपडेट: असल में, मैं जिस कोड का उपयोग करता हूं वह उस लेख से अलग है, और मुझे लगता है कि यह काम करने के कारण मैं ठोकर खा रहा हूं। मैं HttpPostedFile वर्ग का उपयोग करता हूं, जिसमें "फ़ाइलें एमआईएमई मल्टीपार्ट/फॉर्म-डेटा प्रारूप में अपलोड की जाती हैं। डिफ़ॉल्ट रूप से, 256 केबी से बड़े फॉर्म फ़ील्ड और अपलोड की गई फ़ाइलों सहित सभी अनुरोध सर्वर मेमोरी में रखे जाने के बजाय डिस्क पर buffered हैं । "
if (context.Request.Files.Count > 0)
{
string tempFile = context.Request.PhysicalApplicationPath;
for(int i = 0; i < context.Request.Files.Count; i++)
{
HttpPostedFile uploadFile = context.Request.Files[i];
if (uploadFile.ContentLength > 0)
{
uploadFile.SaveAs(string.Format("{0}{1}{2}",
tempFile,"Upload\\", uploadFile.FileName));
}
}
}
आपका कोड आपके आवेदन में कहां रहता है? नियंत्रक? हैंडलर? मॉड्यूल? –
मुझे पता है कि यह प्रश्न पुराना है, लेकिन यह वास्तव में एक अच्छा सवाल है कि मैं जिस परियोजना पर काम कर रहा हूं उसके संदर्भ के रूप में उपयोग कर रहा हूं। त्वरित प्रश्न - आपके चरबी cbRead में इंगित करने के लिए "सीबी" क्या है? – KSwift87
@ KSwift87 'cb'" बाइट्स की गिनती "के लिए खड़ा है, जो फॉग क्रीक में मानक ऐप्स हंगेरियन नोटेशन है। –