{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc-go/issues/414","repository_url":"https://api.github.com/repos/grpc/grpc-go","labels_url":"https://api.github.com/repos/grpc/grpc-go/issues/414/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc-go/issues/414/comments","events_url":"https://api.github.com/repos/grpc/grpc-go/issues/414/events","html_url":"https://github.com/grpc/grpc-go/issues/414","id":113249386,"number":414,"title":"File upload (Blob streaming)","user":{"login":"labkode","id":5175912,"avatar_url":"https://avatars.githubusercontent.com/u/5175912?v=3","gravatar_id":"","url":"https://api.github.com/users/labkode","html_url":"https://github.com/labkode","followers_url":"https://api.github.com/users/labkode/followers","following_url":"https://api.github.com/users/labkode/following{/other_user}","gists_url":"https://api.github.com/users/labkode/gists{/gist_id}","starred_url":"https://api.github.com/users/labkode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/labkode/subscriptions","organizations_url":"https://api.github.com/users/labkode/orgs","repos_url":"https://api.github.com/users/labkode/repos","events_url":"https://api.github.com/users/labkode/events{/privacy}","received_events_url":"https://api.github.com/users/labkode/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2015-10-25T20:19:31Z","updated_at":"2016-12-26T16:50:45Z","closed_at":"2015-10-25T21:14:59Z","body":"Is it possible to easily stream binary blobs with gRPC ?\n\nWith an HTTP/1.1 server I can pipe the [`request.Body`](https://golang.org/pkg/net/http/#Request) to a `Writer` easily.\n\nThe only way I've found to do a big blob steaming with gRPC is to create a Chunk protobuf message\n\n```\nmessage DataChunk {\n    bytes data = 1;\n}\n```\n\nand to create a server streaming endpoint.\n\nThen, the client reads from a `Reader` and fills a little buffer. After, this little buffer is streamed trough the gRPC connection using the DataChunk message format.\n\nIt would be great to have the same Reader/Writer easiness with gRPC streaming.\n\nI've tried to find some info about file upload /blob upload and the only resource I've found is this [article](https://cloud.google.com/solutions/mobile/image-management-mobile-apps-grpc).\n\nIt shows that file uploads are handled by HTTP and metadata handling by gRPC.\n\nIs gRPC able/designed to handle these file uploads without using my poor approach ?\n"},"comment":{"url":"https://api.github.com/repos/grpc/grpc-go/issues/comments/269226310","html_url":"https://github.com/grpc/grpc-go/issues/414#issuecomment-269226310","issue_url":"https://api.github.com/repos/grpc/grpc-go/issues/414","id":269226310,"user":{"login":"vitalyisaev2","id":5507054,"avatar_url":"https://avatars.githubusercontent.com/u/5507054?v=3","gravatar_id":"","url":"https://api.github.com/users/vitalyisaev2","html_url":"https://github.com/vitalyisaev2","followers_url":"https://api.github.com/users/vitalyisaev2/followers","following_url":"https://api.github.com/users/vitalyisaev2/following{/other_user}","gists_url":"https://api.github.com/users/vitalyisaev2/gists{/gist_id}","starred_url":"https://api.github.com/users/vitalyisaev2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vitalyisaev2/subscriptions","organizations_url":"https://api.github.com/users/vitalyisaev2/orgs","repos_url":"https://api.github.com/users/vitalyisaev2/repos","events_url":"https://api.github.com/users/vitalyisaev2/events{/privacy}","received_events_url":"https://api.github.com/users/vitalyisaev2/received_events","type":"User","site_admin":false},"created_at":"2016-12-26T16:50:45Z","updated_at":"2016-12-26T16:50:45Z","body":"@c4milo I guess that everyone who need to transfer big objects via grpc will have to implement chuncking on the top of grpc streaming."}}
{"actor":{"display_login":"vitalyisaev2"}}