通过Webclient上传文件到Box的API v2
本文关键字:Box API v2 文件 Webclient 通过 | 更新日期: 2023-09-27 17:50:31
我正在使用Box API v2,我尝试用WebClient做上传文件,但没有成功。
来自API:
curl https://upload.box.com/api/2.0/files/content '
-H "Authorization: Bearer ACCESS_TOKEN" -X POST '
-F attributes='{"name":"tigers.jpeg", "parent":{"id":"11446498"}}' '
-F file=@myfile.jpg
我用c#写的:
using (WebClient client = new WebClient())
{
client.Headers.Add("Authorization", "Bearer " + Utils.GetAccessTokenFromFile());
client.Headers.Set("Content-Type", "multipart/form-data; boundary=-handeptrai---");
NameValueCollection values = new NameValueCollection() {
{"attributes","{'"name'":'"test.txt'", '"parent'":{'"id'":'"0'"}}"},
{"file",@Utils.TestFilePath}
};
byte[] result = client.UploadValues("https://upload.box.com/api/2.0/files/content", "POST", values);
string json = Encoding.UTF8.GetString(result);
}
当我尝试调试以查看发生了什么时,我在UploadValues步骤中没有看到任何内容。
任何想法?谢谢你!
好了,最后我用HttpClient和MultipartFormDataContent解决了上传问题,这里是上传文本文件的最终代码:
var client = new HttpClient();
var content = new MultipartFormDataContent();
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + Utils.GetAccessTokenFromFile());
content.Add(new StreamContent(File.Open(Utils.AnyFilePath, FileMode.Open)), "token", "test.txt");
content.Add(new StringContent("{'"name'":'"test.txt'", '"parent'":{'"id'":'"0'"}}"), "attributes");
var result = await client.PostAsync("https://upload.box.com/api/2.0/files/content", content);
result.EnsureSuccessStatusCode();
string sContent = await result.Content.ReadAsStringAsync();
那么sContent将是包含上传文件细节的json。希望这对你有帮助!