C#设置uploadFile内容类型(c# setting uploadFile content-T

2019-08-22 22:24发布

我想创建一个API调用到我的服务器,让我上传.csv文件。

客户端代码

string url = "http://testserver/testapi";
string filePath = @"C:\test.csv";
using (WebClient wc = new WebClient())
{
    wc.Headers.Add("Content-Type", "text/plain");
    byte[] responseArray = wc.UploadFile(url, filePath);
}

服务器端代码

string savePath = testSavePath;
foreach (string f in Request.Files.AllKeys)
{
    HttpPostedFileBase file = Request.Files[f];
    file.SaveAs(savePath);
}

我在这条线得到一个例外byte[] responseArray = wc.UploadFile(url, filePath);

奇怪的是,当我看着Request我见

ContentType="multipart/form-data; boundary=---------------------8d006b7c2a5452c"

纵观文档为UploadFile我看到,当引发WebException将被抛出The Content-type header begins with multipart.

我的问题是为什么得到的contentType设置为多,我如何阻止它这样做?

Answer 1:

你的客户端代码似乎确定。 异常可能从服务器端的到来。 但是,这很难判断,你不同意的除外。 请你,你会得到更好的答案。

对于多部分内容类型:该WebClient.UploadFile使用的值Content-Type首部为内容类型的文件(默认为application/octet-stream ,如果未设定),而不是一个整体的HTTP请求。 实际的HTTP请求总是(如你发现) multipart/form-data (按照HTTP规范上传文件),你不能(也不应该)改变它。 在文档中的说明是指内容类型的实际文件。 这意味着,你不能要求WebClient上传文件,是对自己多(这将被包裹在另一个多HTTP信封)。



文章来源: c# setting uploadFile content-Type