Google drive api v3 c# Триггер процесса загрузки во время загрузки файла - PullRequest
0 голосов
/ 30 марта 2020

Я использую Drive api для загрузки файлов. Загрузка работает должным образом, и прогресс запускается. Но он запускается после завершения загрузки. Я хочу, чтобы индикатор запуска одновременно загружался и отвечал на веб-странице. Пробовал этот код.

        protected async void Button1_Click(object sender, EventArgs e)
        {
            await RunDownloadAsync();
        }

        private async Task RunDownloadAsync()
        {
            Google.Apis.Drive.v3.Data.File asd = new Google.Apis.Drive.v3.Data.File();
            asd = await Task.Run(() => upload(path, filename));    
        }

        public async Task<Google.Apis.Drive.v3.Data.File> upload(string _fileloc, string filename)
        {
           request = service.Files.Create(fileMetadata, stream, GetMimeType(_fileloc));
                //   request = service.Files.Create();

                request.Fields = "*";
                request.ChunkSize = 262144;
               request.ProgressChanged += (IUploadProgress)=> Request_ProgressChanged1(IUploadProgress);


                await Task.Run(()=> request.UploadAsync());
            }
            //  return request.ResponseBody;
            // var aaaa = request.ResponseBody;


            return request.ResponseBody;
        }


        private  void Request_ProgressChanged1(IUploadProgress obj)
        {
            double pc = (obj.BytesSent * 100) / FileUpload1.PostedFile.ContentLength;
            File.AppendAllText(@"d:\date.txt", DateTime.Now.ToString("hh:mm:ss.fff") + obj.Status.ToString() + " - " + obj.BytesSent + "____" + pc.ToString("0.00") + Environment.NewLine);
             Label2.Text += DateTime.Now.ToString("hh:mm:ss.fff") + obj.Status.ToString() + " - " + obj.BytesSent + "____" + pc + "<br>";
            Response.Write(DateTime.Now.ToString("hh:mm:ss.fff") + obj.Status.ToString() + " - " + obj.BytesSent + "____" + pc + "<br>");
            // close the stream

            //  HttpContext.Current.Response.Write(string.Format(obj.Status + " " + obj.BytesSent));
            //   HttpContext.Current.Response.Write(obj.BytesSent.ToString());

        }


    }
}
...