public override Task <uploadFileResponse> SaveFile(uploadFileRequest request, ServerCallContext context) { Stream imageStream = new MemoryStream(request.ChunkData.ToByteArray()); string filePath = $"D:\\aa.jpg"; using (FileStream fs = new FileStream(filePath, FileMode.Create)) { fs.Write(request.ChunkData.ToByteArray()); } return(Task.FromResult(new uploadFileResponse() { FileId = filePath })); }
static async Task Main(string[] args) { //var channel = GrpcChannel.ForAddress("https://*****:*****@"C:\Users\e.hazar\Pictures\mobilv3.png"; string fileName = @"D:\data\aa.png"; #region Save // byte[] bytes = File.ReadAllBytes(fileName); // ByteString bs = ByteString.CopyFrom(bytes); // uploadFileRequest uploadData = new uploadFileRequest() // { // ChunkData = bs, // Info = new ImageInfo() { FileName = fileName, ImageType = ".jpg" } // }; // uploadData.ChunkData = bs; //await uploadClient.SaveFileAsync(uploadData); #endregion #region UploadFile //using var uploadFile = uploadClient.UploadFile(); //using (FileStream fs = File.OpenRead(fileName)) //{ // byte[] b = new byte[1024]; // UTF8Encoding temp = new UTF8Encoding(true); // while (fs.Read(b, 0, b.Length) > 0) // { // uploadFileRequest uploadFileReq = new uploadFileRequest() // { // Info = new ImageInfo() { FileName = fileName, ImageType = ".jpg" } // }; // uploadFileReq.ChunkData = ByteString.CopyFrom(b); // await uploadFile.RequestStream.WriteAsync(uploadFileReq); // Console.WriteLine(temp.GetString(b)); // } //} #endregion #region uploadFileStream using var uploadFileStream = uploadClient.UploadFileStream(); using (FileStream fs = File.OpenRead(fileName)) { byte[] b = new byte[1024]; UTF8Encoding temp = new UTF8Encoding(true); int uploadedBytes = 0; while (fs.Read(b, 0, b.Length) > 0) { Console.SetCursorPosition(10, 10); var responseTask = Task.Run(async() => { while (await uploadFileStream.ResponseStream.MoveNext(CancellationToken.None)) { uploadedBytes += (int)uploadFileStream.ResponseStream.Current.FileSize; // Console.Clear(); Console.WriteLine($"{fileName} - Upload File bytes {fs.Length}/{uploadedBytes}"); } }); uploadFileRequest uploadFileReq = new uploadFileRequest() { Info = new ImageInfo() { FileName = fileName, ImageType = ".png" } }; uploadFileReq.ChunkData = ByteString.CopyFrom(b); await uploadFileStream.RequestStream.WriteAsync(uploadFileReq); } } #endregion Console.ReadLine(); }