0

ファイルを Google ドライブにアップロードし、アップロードの進行状況を監視しようとしています。API v2 で .net を使用しています。

私は、FilesResource.InsertMediaUpload を提供する DriveService.Files.Insert メソッドを使用していました。次に、ProgressChanged イベントを使用して進行状況を一覧表示しています。問題は、このイベントが「開始中」、「アップロード中」、「完了」の 3 回しか呼び出されないことです。「アップロード中」の状態でたくさん呼び出してもらいたいです。

これが私のコードです:

    private UploadToGoogle(...)
    {
        //Consider I have an populated File and MemoryStream:
        MemoryStream contentStream = /*Populated memoryStream*/;
        File body = /*Populated file*/;

        FilesResource.InsertMediaUpload uploadRequest = null;

        try
        {
            contentStream.Position = 0;

            uploadRequest = driveService.Files.Insert(body, contentStream, body.MimeType);

            uploadRequest.ProgressChanged += new Action<Google.Apis.Upload.IUploadProgress>(UploadProgessEvent);

            Action asyncAction = () =>
            {
                uploadRequest.Upload();
                Console.WriteLine("Completed!");
            };

            var thread = new System.Threading.Thread(new System.Threading.ThreadStart(asyncAction));
            thread.Start();

        }catch(Exception) {}
    }

古い API の ResumableUpload クラスに関するコンテンツがインターネット上にいくつかありますが、v2 でそれを使用する方法がわかりません。Google.Apis.Upload 名前空間で ResumableUpload クラスを見つけましたが、これは抽象的であり、その使用方法がわかりません。

ドキュメントで進行状況の監視について役立つものは何も見つかりませんでした: https://developers.google.com/drive/manage-uploads

そして、私は本当にWebRequestを介して再開可能なアップロードを使用したくありません.net sdkでそれを実装する方法はありますか...

4

1 に答える 1

1

このProgressChangedイベントは、データの完全なチャンクが API に送信されるたびにのみトリガーされます。チャンク サイズを小さくした場合、またはファイルがデフォルトのチャンク サイズよりもはるかに大きい場合、イベントが複数回トリガーされていることがわかります。

于 2012-11-07T22:00:32.427 に答える