मैं एक फ़ाइल अपलोड करने की कोशिश कर रहा हूं और .NET/C# का उपयोग करके मेरी साइट पर कुछ पैरामीटर के साथ भेज रहा हूं। कुछ ट्यूटोरियल पढ़ने के बाद जो कुछ पैरामीटर या फ़ाइल करते हैं, मैंने कोशिश की है, असफल, उन्हें गठबंधन करने के लिए। यहाँ कैसे मैं इसे करने का प्रयास है:फ़ाइल और पैरामीटर दोनों के साथ WebRequest POST
WebRequest req = WebRequest.Create(baseURL + "upload");
req.Credentials = new NetworkCredential(username, password);
String boundary = "B0unD-Ary";
req.ContentType = "multipart/form-data; boundary=" + boundary;
req.Method = "POST";
((HttpWebRequest)req).UserAgent = "UploadTester v0.1";
string postData = "--" + boundary + "\nContent-Disposition: form-data\n";
postData += "myId=123&someFk=456";
postData += "\n--" + boundary + "\nContent-Disposition: form-data; name=\"file\" filename=\"upload.pdf\" Content-Type: application/pdf\n\n";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
byte[] filedata = null;
using (BinaryReader reader = new BinaryReader(File.OpenRead("myfile.pdf")))
filedata = reader.ReadBytes((int)reader.BaseStream.Length);
req.ContentLength = byteArray.Length + filedata.Length;
req.GetRequestStream().Write(byteArray, 0, byteArray.Length);
req.GetRequestStream().Write(filedata, 0, filedata.Length);
WebResponse response = req.GetResponse();
Stream data = response.GetResponseStream();
StreamReader sReader = new StreamReader(data);
String sResponse = sReader.ReadToEnd();
response.Close();
जब मैंने इसे निष्पादित, मैं एक 500 अपवाद कहा, "हेडर अनुभाग से अधिक 10240 bnytes (शायद यह ठीक से समाप्त नहीं किया जाता है) है" और Wireshark मुझे उस को सूचित भेजा गया अनुरोध एक विकृत पैकेज था, जहां एमआईएमई मल्टीपार्ट विकृत था।
संभवतः कई मुद्दों यहाँ हैं, इसलिए मुझे सभी समस्याओं को आप पहचान सकते हैं हमें बताएं
अद्यतन:। सी #/नेट से माइम अलग करने के लिए, मैं पैदा किया है यहाँ एक धागा: https://stackoverflow.com/questions/1880002/error-in-mime-packet-for-http-post
अपडेट 2: तो बैकएंड में वास्तव में सामग्री-लंबाई के साथ समस्याएं हैं, यह कहकर कि पढ़ने के लिए उपलब्ध बाइट्स की मात्रा निर्दिष्ट सामग्री-लंबाई से छोटी है। परंतु! यदि मैं req.ContentLength में सामग्री-लंबाई को कम करता हूं, तो मेरे पास डेटा भेजने के लिए पर्याप्त बफर आकार नहीं है। कोई सुझाव?
अद्यतन 3: वास्तव में, यह कितना डेटा शामिल
यदि आप .NET> = 4.0 का उपयोग कर रहे हैं तो ऐसा करने के लिए एक आसान तरीका के लिए मेरे उत्तर पर छोड़ दें। – Joshcodes