使用Web请求将文件插入到Google云端硬盘中

时间:2012-11-12 16:45:03

标签: c# .net httpwebrequest google-drive-api

我正在尝试使用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 []数据的属性名称?

任何可以欣赏的例子。

1 个答案:

答案 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)