The main problem:
I am looking for a solution to improve upload/download speed for large files. I've heard about relatively new technology gRPC. I understand that it is good for server to server communication e.g. microservices architecture.
Client
However I need file upload/download component on front end (browser) ( something like Fine uploader, jQuery file upload plugin, Resumable.js) with gRPC support. I can do support by myself. But I don't know how and what and if it is possible at all. So I need an example or an advise or pointing to the right direction. No matter JS side: vanilla, react, angular ...
Server side
Research done on the subject
Please help or at least say that it is impossible
I understand this is a bit old. But wanted to post this thing. I did transfer a file using C# grpc. Please see below a basic grpc file reque and response
syntax = "proto3";
option csharp_namespace = "GrpcGreeter";
package greet;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}
// The request message containing the user's name.
message HelloRequest {
string FileName = 1;
}
// The response message containing the greetings.
message HelloReply {
string FileName = 1;
bytes data=2;
}
using Google.Protobuf;
using Grpc.Core;
using GrpcGreeter;
using static System.Net.Mime.MediaTypeNames;
namespace GrpcGreeter.Services
{
public class GreeterService : Greeter.GreeterBase
{
private readonly ILogger<GreeterService> _logger;
public GreeterService(ILogger<GreeterService> logger)
{
_logger = logger;
}
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply
{
FileName = request.FileName,
Data = ByteString.CopyFromUtf8(File.ReadAllText(@"D:\files\"+ request.FileName))
});
}
}
}
using System.Threading.Tasks;
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7092");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(new HelloRequest { FileName = "test.txt" });
File.WriteAllText(@"D:\files\"+"received"+reply.FileName, reply.Data.ToStringUtf8());
Console.WriteLine("File written successfully. Press any key to exit...");
Console.ReadKey();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With