我正在尝试使用webRequest在Google云端硬盘中插入一个文件(因为我正在实施可恢复的异步上传),但我不知道如何将数据放入请求“正文”中。
从现在起,我有:
public static HttpWebRequest CreateUploadRequest(Google.Apis.Drive.v2.DriveService driveService, string uri, Stream contentStream, string title, string mimeType, string description = null)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "PUT";
Dictionary<string, object> requestBody = new Dictionary<string, object>();
requestBody["title"] = title;
requestBody["mimeType"] = mimeType;
if (!string.IsNullOrWhiteSpace(description))
{
requestBody["description"] = description;
}
driveService.Authenticator.ApplyAuthenticationToRequest(request);
Stream requestStream = request.GetRequestStream();
//How to do that???
requestStream.Close();
return request;
}
我为HttpWebRequest设置了标题,如何处理正文数据? 什么是要插入的文件的byte []数据的属性名称?
任何可以欣赏的例子。
答案 0 :(得分:3)
this页面上的SDK文档说:
请求的主体被格式化为多部分/相关内容类型RFC2387,并且恰好包含两部分。部件由边界字符串标识,最后的边界字符串后跟两个连字符。
如果您从未使用过它,RFC2387是MIME定义。 MIME中的二进制数据通常是BASE64编码的,就像RFC中的这个例子一样:
Content-Type: Application/octet-stream
Content-Description: The fixed length records
Content-Transfer-Encoding: base64
Content-ID: <950120.aaCB@XIson.com>
T2xkIE1hY0RvbmFsZCBoYWQgYSBmYXJtCkUgSS
BFIEkgTwpBbmQgb24gaGlzIGZhcm0gaGUgaGFk
IHNvbWUgZHVja3MKRSBJIEUgSSBPCldpdGggYS
BxdWFjayBxdWFjayBoZXJlLAphIHF1YWNrIHF1
YWNrIHRoZXJlLApldmVyeSB3aGVyZSBhIHF1YW
NrIHF1YWNrCkUgSSBFIEkgTwo=
有关将二进制数据上传到Web请求的示例,请查看此问题:Upload files with HTTPWebrequest (multipart/form-data)