如何使用C#中的发布Web请求发送.csv文件

时间:2016-11-29 05:54:47

标签: c# csv httpwebrequest multipartform-data

我想在POST请求中发送.csv文件,其中内容类型为“multipart / form-data”,并且正文中有一些密钥和.csv文件 以下是我尝试过的代码:

string url = "*****URL*****";
string root = AppDomain.CurrentDomain.BaseDirectory;
string file = root + "Folder\\file.csv";
FileInfo fileInfo = new FileInfo(file);
int fileLength = (int)fileInfo.Length;
FileStream rdr = new FileStream(file, FileMode.Open);

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);    
request.Method = "POST";
request.ContentType = "multipart/form-data";
request.Headers["Content-Type"] = "multipart/form-data";

int bytesRead = 0;
byte[] requestByte = new byte[fileLength];
request.ContentLength = requestByte.Length;

using (Stream requestStream = request.GetRequestStream())
{
    while ((bytesRead = rdr.Read(requestByte, 0, requestByte.Length)) != 0)
    {
         requestStream.Write(requestByte, 0, bytesRead);
         requestStream.Close();
    }
}

string responseData;
using (StreamReader responseStream = new StreamReader(request.GetResponse().GetResponseStream()))
{
    responseData = responseStream.ReadToEnd();
    responseStream.Close();
}

但这是在内容类型中给出错误,可能是我做错了。请帮帮我。

2 个答案:

答案 0 :(得分:0)

最后这段代码对我有用,

string boundary = "---" + DateTime.Now.Ticks.ToString("x");
var client = new RestClient("*****URL*****");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "multipart/form-data; boundary=" + boundary);
request.AddParameter("multipart/form-data; boundary=" + boundary, "--"+ boundary + "\r\nContent-Disposition: form-data; name=\"**KEY**\"; filename=\"***File Name***.csv\"\r\nContent-Type: text/csv\r\n\r\n\r\n--" + boundary + "--", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

答案 1 :(得分:0)

我写了一个使用webclient执行此操作的multipart form helper

相关问题