如何在 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;
                }