我在Windows中使用Post Man将 application / form-data 中的文件发布到如下所示的网址中。,
http://{host}:{port}/file
表单数据中的文件是..,
file "C:/Temp/file.txt"
在postMan中它起作用了。
但是我想在C#控制台应用程序中编写代码来执行此操作。
我是新手。所以请任何人在C#中的 Post Method {application / form-data} 中提供任何方法来编写代码来处理文件作为url的一部分。 how-to-fill-forms-and-submit-with-webclient-in-c-sharp
我已查看附件链接。
它只有代码才能传递" application / x-www-form-urlencoded" 。
但我需要" application / form-data" 的代码。
注意:我在该链接中尝试了以下代码,它仅显示415不支持的媒体类型错误。
var encoding=new ASCIIEncoding();
var postData="C:/test.csv";
byte[] data = encoding.GetBytes(postData);
var myRequest =
(HttpWebRequest)WebRequest.Create("http://localhost/MyIdentity/Default.aspx");
myRequest.Method = "POST";
myRequest.ContentType="application/form-data";
myRequest.ContentLength = data.Length;
var newStream=myRequest.GetRequestStream();
newStream.Write(data,0,data.Length);
newStream.Close();
var response = myRequest.GetResponse();
var responseStream = response.GetResponseStream();
var responseReader = new StreamReader(responseStream);
var result = responseReader.ReadToEnd();
responseReader.Close();
response.Close();
答案 0 :(得分:1)
我相信你应该尝试多部分表单数据而不是应用程序/表单数据。 我已成功将PowerPoint文件发布到ASP.NET MVC Controller以处理服务器上的文件。 以下是显示如何使用多部分表单内容类型上传文件的link。
答案 1 :(得分:1)
此代码仅适用于" multipart / form-data"
//Convert each of the three inputs into HttpContent objects
byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
HttpContent bytesContent = new ByteArrayContent(fileBytes);
// Submit the form using HttpClient and
// create form data as Multipart (enctype="multipart/form-data")
using (var client = new System.Net.Http.HttpClient())
using (var formData = new MultipartFormDataContent())
{
// <input type="text" name="filename" />
formData.Add(bytesContent, "filename", Path.GetFileName(filePath));
// Actually invoke the request to the server
// equivalent to (action="{url}" method="post")
var response = client.PostAsync(url, formData).Result;
// equivalent of pressing the submit button on the form
if (!response.IsSuccessStatusCode)
{
return null;
}
return response.Content.ReadAsStreamAsync().Result;
}