वेबरेस्पॉन्स से फ़ाइल प्राप्त करने का सबसे अच्छा तरीका क्या है (इस मामले में, एक पीडीएफ, लेकिन कोई भी फाइल करेगा) और उसे मेमोरीस्ट्रीम में डाल दें? WebResponse से .GetResponseStream() का उपयोग स्ट्रीम ऑब्जेक्ट प्राप्त करता है, लेकिन यदि आप उस स्ट्रीम को किसी विशिष्ट प्रकार की स्ट्रीम में कनवर्ट करना चाहते हैं, तो आप क्या करते हैं?मैं एक वेब रेस्पॉन्स को मेमोरी स्ट्रीम में कैसे रखूं?
उत्तर
इसे एक साल या उससे पहले वेब से कॉपी किया गया था।
//---------- Start HttpResponse
if(objHttpWebResponse.StatusCode == HttpStatusCode.OK)
{
//Get response stream
objResponseStream = objHttpWebResponse.GetResponseStream();
//Load response stream into XMLReader
objXMLReader = new XmlTextReader(objResponseStream);
//Declare XMLDocument
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(objXMLReader);
//Set XMLResponse object returned from XMLReader
XMLResponse = xmldoc;
//Close XMLReader
objXMLReader.Close();
}
//Close HttpWebResponse
objHttpWebResponse.Close();
}
मैं http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/eeeefd81-8800-41b2-be63-71acdaddce0e/
Dim request As WebRequest
Dim response As WebResponse = Nothing
Dim s As Stream = Nothing
Dim fs As FileStream = Nothing
Dim file As MemoryStream = Nothing
Dim uri As New Uri(String.Format("http://forums.microsoft.com/forums/ShowPost.aspx?PostID=2992978&SiteID=1"))
request = WebRequest.Create(uri)
request.Timeout = 10000
response = request.GetResponse
s = response.GetResponseStream
'2 - Receive file as memorystream
Dim read(256) As Byte
Dim count As Int32 = s.Read(read, 0, read.Length)
File = New MemoryStream
Do While (count > 0)
File.Write(read, 0, count)
count = s.Read(read, 0, read.Length)
Loop
File.Position = 0
'Close responsestream
s.Close()
response.Close()
'3 - Save file
fs = New FileStream("c:\test.html", FileMode.CreateNew)
count = file.Read(read, 0, read.Length)
Do While (count > 0)
fs.Write(read, 0, count)
count = file.Read(read, 0, read.Length)
Loop
fs.Close()
File.Close()
यह कुछ गंभीरता से मैला कोड है, मैं इसका कभी भी उपयोग नहीं करूंगा! – emalamisura
पर निम्न वहाँ SoloBold के answer है कि मैं जब यह परीक्षण की खोज के साथ एक गंभीर मुद्दा है पाया। FtpWebRequest
के माध्यम से MemoryStream
में फ़ाइल पढ़ने के लिए इसका उपयोग करते समय यह पूरी स्ट्रीम को स्मृति में पढ़ने में असफल रहा। मैंने इसे Peek()
पर ट्रैक किया है, कभी-कभी पहले 1460 बाइट्स के बाद -1 लौटा रहा है, भले ही Read()
सफल हो गया हो (फ़ाइल इससे काफी बड़ी थी)। यह कैसे के लिए कहा मूल पोस्टर के रूप में एक MemoryStream में एक WebResponse डाल करने के लिए प्रदर्शित नहीं करता है
MemoryStream memStream;
using (Stream response = request.GetResponseStream()) {
memStream = new MemoryStream();
byte[] buffer = new byte[1024];
int byteCount;
do {
byteCount = stream.Read(buffer, 0, buffer.Length);
memStream.Write(buffer, 0, byteCount);
} while (byteCount > 0);
}
// If you're going to be reading from the stream afterwords you're going to want to seek back to the beginning.
memStream.Seek(0, SeekOrigin.Begin);
// Use memStream as required
यह मेरे लिए काम करता है, जबकि अन्य उत्तरों काम नहीं करते थे। – Matt
उत्तर के लिए धन्यवाद, लॉरेंस। मैं कुछ अन्य तरीकों से ऐसा करने की कोशिश कर असंगत परिणाम प्राप्त कर रहा था। – Cashley
जब आप .NET 4.0 में CopyTo (Stream, Int32) विधि द्वारा आईएल जेनरेट (dotPeek के माध्यम से) को देखते हैं तो आप देखेंगे कि यह कोड को एक ही पैटर्न के साथ उत्पन्न करता है लेकिन कोड की एक पंक्ति का उपयोग करता है। https://msdn.microsoft.com/en-us/library/system.io.stream.copyto(v=vs.100).aspx। प्रतिक्रिया। कॉपीराइट (मेमस्ट्रीम, 1024); memStream.Position = 0; –
- 1. मैं मेमोरी स्ट्रीम
- 2. मेमोरी स्ट्रीम
- 3. मेमोरी स्ट्रीम
- 4. मैं HTML कॉलम में पैराग्राफ को एक साथ कैसे रखूं?
- 5. सी ++ स्ट्रीम मेमोरी
- 6. मैं हमेशा एक पायथन HTTP सर्वर को कैसे रखूं?
- 7. मैं एक हैशसेट वर्णानुक्रमित आदेश कैसे रखूं?
- 8. मेमोरी स्ट्रीम सी #
- 9. एफएमओडी मेमोरी स्ट्रीम समस्या
- 10. पुन: उपयोग मेमोरी स्ट्रीम
- 11. स्ट्रिंग को मेमोरी स्ट्रीम में कनवर्ट करें - मेमोरी स्ट्रीम विस्तार योग्य नहीं है?
- 12. मेमोरी स्ट्रीम से स्ट्रिंग
- 13. मैं WinForms में केंद्रित एक लेबल कैसे रखूं?
- 14. मैं दो गिट भंडारों को सिंक में कैसे रखूं?
- 15. एएसपी.नेट वेब एपी एचटीपी रेस्पॉन्स एक्सेप्शन 400 (खराब अनुरोध) IIS
- 16. मैं प्रेस जावास्क्रिप्ट को दबाकर दबाए रखूं?
- 17. मैं नैन्सीएफएक्स में स्ट्रीम आउटपुट कैसे लिखूं?
- 18. मैं एक छवि को कैसे पकड़ूं और इसे स्थानीय स्टोरेज में कैसे रखूं?
- 19. मैं अपना MySQL डेटाबेस सुरक्षित कैसे रखूं?
- 20. मैं "WSGIPass प्राधिकरण" कहां रखूं?
- 21. jQuery - मैं ओवरले पर एक डीवी कैसे रखूं?
- 22. रूबी में मेमोरी से HTTP स्ट्रीम स्ट्रीम डेटा कैसे कर सकता हूं?
- 23. मैं एक ही पंक्ति पर दो divs कैसे रखूं?
- 24. मैं हास्केल के मजबूत टाइपिंग को लचीला कैसे रखूं?
- 25. मैं एसवीएन से रिशेर्पर फ़ाइलों को कैसे रखूं?
- 26. मैं अपने मोजे कहां रखूं?
- 27. मैं एमवीसी में स्क्रॉल स्थिति कैसे बनाए रखूं?
- 28. मैं अपना ओपनजीएल ऐप पूर्णस्क्रीन मोड में कैसे रखूं?
- 29. मैं सिल्वरलाइट में प्रोग्रामेटिक रूप से कैनवास कैसे रखूं?
- 30. मैं htaccess और htpasswd का उपयोग कर एक मॉडएक्स वेबसाइट में संसाधनों को कैसे सुरक्षित रखूं?
:
इसके बजाय मैं नीचे समाधान प्रस्तावित। –