C# 正在将文件上载到Box.net
我正在尝试使用rest api将文件上载到box.net。但我每次都会遇到404错误。 这里是请求头(来自fiddler)。我犯了什么错误C# 正在将文件上载到Box.net,c#,box-api,C#,Box Api,我正在尝试使用rest api将文件上载到box.net。但我每次都会遇到404错误。 这里是请求头(来自fiddler)。我犯了什么错误 POST https://api.box.com/2.0/files/content HTTP/1.1 Authorization: BoxAuth api_key={key}&auth_token={tokem} Content-Type: multipart/form-data; boundary="13afaf22-f210-464b-b
POST https://api.box.com/2.0/files/content HTTP/1.1
Authorization: BoxAuth api_key={key}&auth_token={tokem}
Content-Type: multipart/form-data; boundary="13afaf22-f210-464b-bcc3-3cd3e4ed1617"
Host: api.box.com
Content-Length: 166
Expect: 100-continue
--13afaf22-f210-464b-bcc3-3cd3e4ed1617
Content-Disposition: form-data; filename=test.zip; folder_id=0
{empty line - I don't know why it here}
{bytes starting here}
--13afaf22-f210-464b-bcc3-3cd3e4ed1617--
注意,我使用c#及其HttpClient类和MultiPartFormDataContent作为内容源
已解决:
问题解决了。请求头和正文应如下所示:
POST https://api.box.com/2.0/files/content HTTP/1.1
Authorization: BoxAuth api_key={key}&auth_token={token}
Content-Type: multipart/form-data; boundary="d174f29b-6def-47db-8519-3da38b21b398"
Host: api.box.com
Content-Length: 314
Expect: 100-continue
--d174f29b-6def-47db-8519-3da38b21b398
Content-Disposition: form-data; filename="hello.txt"; name="filename"
Content-Type: application/octet-stream
{Bytes}
--d174f29b-6def-47db-8519-3da38b21b398
Content-Disposition: form-data; name="folder_id"
0
--d174f29b-6def-47db-8519-3da38b21b398--
谢谢好的,如果有人感兴趣,这里有一种方法可以将文件上传到Box.com 我正在使用.NET4.5中的类
public async Task Upload(string authorization, string filename, string parentID)
{
HttpRequestMessage message = new HttpRequestMessage();
message.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("BoxAuth", authorization);
MultipartFormDataContent content = new MultipartFormDataContent();
StreamContent streamContent = null;
streamContent = new StreamContent(new FileStream(localURI, FileMode.Open));
streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
FileName = "\"" + filename + "\"",
Name = "\"filename\""
};
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
content.Add(streamContent);
ByteArrayContent byteContent = new ByteArrayContent(parentID.ToByteArray());
byteContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "\"folder_id\""
};
content.Add(byteContent);
message.Method = HttpMethod.Post;
message.Content = content;
message.RequestUri = new Uri("https://api.box.com/2.0/files/content");
HttpResponseMessage response = null;
Task<HttpResponseMessage> t = httpClient.SendAsync(message, cancelationToken);
response = await t;
if (t.IsCompleted)
{
if (!response.IsSuccessStatusCode)
{
if (response.Content != null)
Logger.Error(await response.Content.ReadAsStringAsync(), "Box Upload");
else
Logger.Error("Error", "Box Upload");
}
}
}
公共异步任务上载(字符串授权、字符串文件名、字符串父ID)
{
HttpRequestMessage=新的HttpRequestMessage();
message.Headers.Authorization=new System.Net.Http.Headers.AuthenticationHeaderValue(“BoxAuth”,Authorization);
MultipartFormDataContent内容=新的MultipartFormDataContent();
StreamContent-StreamContent=null;
streamContent=newstreamcontent(newfilestream(localURI,FileMode.Open));
streamContent.Headers.ContentDisposition=新的ContentDispositionHeaderValue(“表单数据”)
{
FileName=“\”+FileName+“\”,
Name=“\”文件名“”
};
streamContent.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/八位字节流”);
content.Add(streamContent);
ByteArrayContent byteContent=新的ByteArrayContent(parentID.ToByteArray());
byteContent.Headers.ContentDisposition=新的ContentDispositionHeaderValue(“表单数据”)
{
Name=“\”文件夹\u id“”
};
content.Add(字节内容);
message.Method=HttpMethod.Post;
message.Content=内容;
message.RequestUri=新Uri(“https://api.box.com/2.0/files/content");
HttpResponseMessage响应=null;
Task t=httpClient.SendAsync(消息,cancelationToken);
响应=等待t;
如果(t.已完成)
{
如果(!response.issucessStatusCode)
{
if(response.Content!=null)
Logger.Error(wait response.Content.ReadAsStringAsync(),“Box Upload”);
其他的
Logger.Error(“Error”,“Box Upload”);
}
}
}
您可以发布您的解决方案作为此问题的答案吗?感谢您回来回答您自己的问题,它确实有助于不太流行的标记。当我尝试上载一个大文件(>25MB)时,这对我来说是失败的,我正在Windows Mobile 8开发中使用此代码,请告诉我可能的原因。这可能是由HttpClient的小写入超时引起的。