Hi, i want to implement an multipart upload for Google Drive to do something like this [1]:
POST /upload/drive/v2/files?uploadType=multipart HTTP/1.1 Host: www.googleapis.com Authorization: Bearer your_auth_token Content-Type: multipart/related; boundary="foo_bar_baz" Content-Length: number_of_bytes_in_entire_request_body --foo_bar_baz Content-Type: application/json; charset=UTF-8 { "title": "My File" } --foo_bar_baz Content-Type: image/jpeg JPEG data --foo_bar_baz-- I build the header correctly but the content is my issue. So my first Step was to implement the method call in my DriveAsyncClient: @Named("Files:insert") @POST @OAuthScopes(DriveConstants.DRIVE_SCOPE) @Path("upload/drive/v2/files") @Consumes(MediaType.MULTIPART_FORM_DATA) @ResponseParser(ParseObjectFrom.class) ListenableFuture<DriveResponseUpload> putContentAndMetadata (@BinderParam(BindUploadMetadataToContent.class) DriveObject object, @QueryParam(value = "uploadType") String uploadType); Next Step was to implement the BindUploadMetadataToContent and so i had to try out the MultiPartForm like this one: @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { checkArgument(checkNotNull(input, "input") instanceof DriveObject, "this binder is only valid for DriveObject"); DriveObject obj = DriveObject.class.cast(input); Part.PartOptions contentOptions = new Part.PartOptions().contentType(obj.getMetadata().getContentMetadata().getContentType()); contentOptions.filename(obj.getMetadata().getTitle()); Part content = Part.create(obj.getMetadata().getTitle(), obj.getPayload(), contentOptions); Part contentMetadata = Part.create(/*Content Metadata like Title*/); request.setPayload(new MultipartForm("foo_bar_baz", content, contentMetadata)); return request } The Question is, does the MultipartForm class still works and where is the mistake? Cheers, Josh [1] https://developers.google.com/drive/web/manage-uploads