コード例 #1
0
 private static async Task SendFileMetadata(string fileName, AsyncClientStreamingCall <StartUploadRequest, StartUploadResponse> call)
 {
     var fileMetadataRequest = new StartUploadRequest()
     {
         FileMetadata = new FileMetadata
         {
             FileName = fileName
         }
     };
     await call.RequestStream.WriteAsync(fileMetadataRequest);
 }
コード例 #2
0
        private static async Task SendFilePayload(string sourceFile, AsyncClientStreamingCall <StartUploadRequest, StartUploadResponse> call, CancellationToken cancellationToken)
        {
            var chunksize = 0x1F400;

            byte[]        chunk  = new byte[chunksize];
            Memory <byte> memory = new Memory <byte>(chunk);

            await using (FileStream fileToUpload = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read, chunksize))
            {
                int bytesRead = 0;
                while ((bytesRead = await fileToUpload.ReadAsync(memory, cancellationToken)) > 0)
                {
                    var filePayloadRequest = new StartUploadRequest()
                    {
                        FilePayload = new FilePayload
                        {
                            Chunk = Google.Protobuf.ByteString.CopyFrom(memory.Slice(0, bytesRead).Span)
                        }
                    };

                    await call.RequestStream.WriteAsync(filePayloadRequest);
                }
            }
        }