3

我正在尝试创建一个对我的服务器的 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.

我的问题是为什么 contentType 设置为 multipart 以及如何防止它这样做?

4

1 回答 1

4

您的客户端代码似乎没问题。异常可能来自服务器端。但这很难判断,因为您没有分享例外情况。请做,你会得到更好的答案。

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

于 2013-04-14T06:02:13.813 回答