如何在 C# 控制台中将代码写入 post application/form-data 中的文件?
How to write code to post the file in application/form-data in C# console?
我正在使用 Post Man in windows 将 post application/form-data 中的文件导入 web url 如下所示。,
http://{host}:{port}/file
表单数据中的文件是..,
file "C:/Temp/file.txt"
在post伙计,它成功了。
但我想编写代码在 C# 控制台应用程序中执行此操作。
我是 this.So 的新手,请任何人在 Post 方法 {[=44= 中作为 url 的一部分提供任何方法来编写代码来处理文件]} 在 C# 中。
how-to-fill-forms-and-submit-with-webclient-in-c-sharp
我已检查 link 附件。
它只有通过"application/x-www-form-urlencoded"的代码。
但是我需要 "application/form-data".
的代码
注意:我已经尝试过下面的代码 link 它仅显示 415 Unsupported media Type 错误。
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();
我认为您应该尝试多部分表单数据而不是 application/form-data。
我已成功将 PowerPoint 文件发布到 ASP.NET MVC 控制器以在服务器上处理该文件。
link 显示了如何使用多部分表单内容类型上传文件。
此代码仅适用于 "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;
}
我正在使用 Post Man in windows 将 post application/form-data 中的文件导入 web url 如下所示。,
http://{host}:{port}/file
表单数据中的文件是..,
file "C:/Temp/file.txt"
在post伙计,它成功了。
但我想编写代码在 C# 控制台应用程序中执行此操作。
我是 this.So 的新手,请任何人在 Post 方法 {[=44= 中作为 url 的一部分提供任何方法来编写代码来处理文件]} 在 C# 中。 how-to-fill-forms-and-submit-with-webclient-in-c-sharp
我已检查 link 附件。
它只有通过"application/x-www-form-urlencoded"的代码。
但是我需要 "application/form-data".
的代码注意:我已经尝试过下面的代码 link 它仅显示 415 Unsupported media Type 错误。
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();
我认为您应该尝试多部分表单数据而不是 application/form-data。 我已成功将 PowerPoint 文件发布到 ASP.NET MVC 控制器以在服务器上处理该文件。 link 显示了如何使用多部分表单内容类型上传文件。
此代码仅适用于 "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;
}