我正在尝试使用 webRequest 在谷歌云端硬盘中插入文件(因为我正在实现可恢复的异步上传),但我不知道如何将数据放入请求"正文"中。
从现在开始,我有:
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[] 数据的属性名称是什么?
任何例子都值得赞赏。
此页面上的 SDK 文档说:
请求正文的格式为多部分/相关内容类型RFC2387,并且正好包含两个部分。这些部分由边界字符串标识,最终边界字符串后跟两个连字符。
如果您从未使用过它,那么 MIME 定义RFC2387。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 请求的示例:使用 HTTPWebrequest 上传文件(多部分/表单数据)