का उपयोग कर पोस्ट डेटा/अपलोड छवि के लिए HttpWebRequest का उपयोग करके मैं छवियों को अपलोड करने के लिए ImageShack API का उपयोग करने का प्रयास कर रहा हूं। इसका उपयोग करने के लिए, मुझे multipart/form-data
का उपयोग कर छवि POST
माना जाता है। मुझे यह पसंद था ...मल्टीपार्ट/फॉर्म-डेटा
var postData = "";
var req = HttpWebRequest.Create("http://www.imageshack.us/upload_api.php");
req.Method = "POST";
req.ContentType = "multipart/form-data";
postData += "key=my_key_here&";
postData += "type=base64&";
// get base64 data from image
byte[] bytes = File.ReadAllBytes(@"D:\tmp\WpfApplication1\WpfApplication1\Images\Icon128.gif");
string encoded = Convert.ToBase64String(bytes);
postData += "fileupload=" + encoded;
byte[] reqData = Encoding.UTF8.GetBytes(postData);
using (Stream dataStream = req.GetRequestStream())
{
dataStream.Write(reqData, 0, reqData.Length);
}
var res = (HttpWebResponse)req.GetResponse();
var resStream = res.GetResponseStream();
var reader = new StreamReader(resStream);
string resString = reader.ReadToEnd();
txt1.Text = resString;
लेकिन ImageShack शिकायत कर रहा है कि
<links>
<error id="parameter_missing">Sorry, but we've detected that unexpected data is received. Required parameter 'fileupload' is missing or your post is not multipart/form-data</error>
</links>
FileUpload मौजूद है और मैं multipart/form-data
क्या गलत उपयोग कर रहा हूँ?
अद्यतन:
नए कोड http://pastebin.com/TN6e0CD8
डेटा पोस्ट http://pastebin.com/fYE9fsxs
अद्यतन 2
मैं अन्य प्रश्न Multipart forms from C# client को देखा। सीमा के साथ मेरे कोड को संशोधित किया, उम्मीद है कि 100 हेडर अभी भी मुझे काम नहीं कर रहा है ...
ServicePointManager.Expect100Continue = false;
var boundary = "-----------------------------28520690214962";
var newLine = Environment.NewLine;
var propFormat = boundary + newLine +
"Content-Disposition: form-data; name=\"{0}\"" + newLine + newLine +
"{1}" + newLine + newLine;
var fileHeaderFormat = boundary + newLine +
"Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"" + newLine;
var req = (HttpWebRequest)HttpWebRequest.Create("http://jm/php/upload.php");
req.Method = WebRequestMethods.Http.Post;
req.ContentType = "multipart/form-data; boundary=" + boundary;
using (var reqStream = req.GetRequestStream()) {
var reqWriter = new StreamWriter(reqStream);
var tmp = string.Format(propFormat, "str1", "hello world");
reqWriter.Write(tmp);
tmp = string.Format(propFormat, "str2", "hello world 2");
reqWriter.Write(tmp);
reqWriter.Write(boundary + "--");
reqWriter.Flush();
}
var res = req.GetResponse();
using (var resStream = res.GetResponseStream()) {
var reader = new StreamReader(resStream);
txt1.Text = reader.ReadToEnd();
}
के संभावित डुप्लिकेट काम करता है://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data) –