1

我正在尝试使用 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设置了headers,body的数据应该如何处理?要插入的文件的 byte[] 数据的属性名称是什么?

任何例子都值得赞赏。

4

1 回答 1

3

页面上的 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 请求的示例:使用 HTTPWebrequest (multipart/form-data) 上传文件

于 2012-11-12T17:02:39.800 回答