1

webRequestを使用してGoogleドライブにファイルを挿入しようとしていますが(再開可能な非同期アップロードを実装しているため)、リクエスト「body」にデータを配置する方法がわかりません。

今から、私は持っています:

    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 []データのプロパティ名は何ですか?

任意の例をいただければ幸いです。

4

1 に答える 1

3

このページのSDKドキュメントには次のように書かれています。

リクエストの本文は、マルチパート/関連コンテンツタイプRFC2387としてフォーマットされ、正確に2つのパートが含まれています。パーツは境界文字列で識別され、最後の境界文字列の後に2つのハイフンが続きます。

一度も使用したことがない場合は、RFC2387がMIME定義です。MIMEのバイナリデータは、RFCの次の例のように、通常BASE64でエンコードされています。

 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 に答える