我正在尝试上传一个csv文件,但我似乎无法让它以编程方式工作。如果我在Chrome中使用Postman发送它可以正常工作的文件,这就是它发送的内容(Fiddler输出):
------WebKitFormBoundary2YsMyLR3QAPruTy4
Content-Disposition: form-data; name="Content-Type"; filename="613022.csv"
Content-Type: application/vnd.ms-excel
// File Content here
------WebKitFormBoundary2YsMyLR3QAPruTy4--
但是,使用此代码:
WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential(user, pw);
wc.Headers[HttpRequestHeader.Cookie] = "OBBasicAuth=fromDialog";
wc.Headers[HttpRequestHeader.ContentType] = "application/vnd.ms-excel";
wc.UploadFile(baseURL + service + apiVersion + resource, "post", file);
结果(Fiddler输出):
-----------------------8d101dbe85fe96c
Content-Disposition: form-data; name="file"; filename="613022.csv"
Content-Type: application/vnd.ms-excel
// File Content here
-----------------------8d101dbe85fe96c--
哪个不起作用,服务器返回503错误。我看到的唯一区别是Content-Disposition名称。我该如何设置或有更好的方法来实现这一目标?
答案 0 :(得分:0)
也许你需要在方法参数中“上传”而不是“发布” - 只是猜测。
答案 1 :(得分:0)
我认为原始方法的问题是WebClient.UploadFile
以服务器意外的方式生成multipart/form-data
请求,因此是5xx错误代码。
在考虑了一下之后,我认为this question的答案应该为您提供根据您的需求调整请求的起点。