c#设置uploadFile内容类型

本文关键字:类型 uploadFile 设置 | 更新日期: 2023-09-27 18:08:58

我正在尝试创建一个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的文档,我看到当The Content-type header begins with multipart.

时将抛出webeexception。

我的问题是为什么contentType被设置为多部分,我如何防止它这样做?

c#设置uploadFile内容类型

您的客户端代码看起来不错。异常可能来自服务器端。但这很难判断,因为你没有例外。请这样做,你会得到更好的答案。

对于多部分内容类型:WebClient.UploadFile使用Content-Type头的值作为文件的内容类型(如果没有设置,默认为application/octet-stream),而不是整个HTTP请求。实际的HTTP请求总是(正如您所发现的)multipart/form-data(根据上传文件的HTTP规范),您不能(也不应该)更改它。文档中的注释是指实际文件的内容类型。这意味着您不能要求WebClient上传自己的多部分文件(这将被包装在另一个多部分HTTP信封中)。