Download jpeg to Google Drive from the Android app "unexpected end of stream"

I created an Android app where I use the camera to take a picture, and then try to upload the photo to my Google Drive account. Here is the code snippet I'm using:

HttpTransport httpTransport = new NetHttpTransport(); JacksonFactory jsonFactory = new JacksonFactory(); Drive.Builder b = new Drive.Builder(httpTransport, jsonFactory, null); b.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() { public void initialize(JsonHttpRequest request) throws IOException { DriveRequest driveRequest = (DriveRequest) request; driveRequest.setPrettyPrint(true); driveRequest.setKey(MY_CLIENT_ID); driveRequest.setOauthToken(token); } }); final Drive drive = b.build(); final com.google.api.services.drive.model.File body = new com.google.api.services.drive.model.File(); body.setTitle(mCurrentPhotoPath.substring(mCurrentPhotoPath.lastIndexOf("/") + 1, mCurrentPhotoPath.length())); body.setDescription("A Test File"); body.setMimeType("image/jpeg"); java.io.File file = new java.io.File(mCurrentPhotoPath); final FileContent mediaContent = new FileContent("image/jpeg", file); //final InputStreamContent mediaContent = new InputStreamContent("image/jpeg", new FileInputStream(file)); new Thread(new Runnable() { public void run() { try { com.google.api.services.drive.model.File file = drive.files().insert(body, mediaContent).execute(); System.out.println("Title: " + file.getTitle()); System.out.println("Description: " + file.getDescription()); System.out.println("MIME type: " + file.getMimeType()); } catch (GoogleJsonResponseException e) { GoogleJsonError error = e.getDetails(); System.err.println("Error code:" + error.getCode()); System.err.println("Error message: " + error.getMessage()); // More error information can be retrieved with error.getErrors(). } catch (HttpResponseException e) { // No Json body was returned by the API. System.err.println("HTTP Status code: " + e.getStatusCode()); System.err.println("HTTP Reason: " + e.getMessage()); } catch (IOException e) { // Other errors (eg connection timeout, etc.). System.out.println("An error occurred: " + e); } } }).start(); 

What happens, I get the following exceptions in logcat:

 09-17 22:11:31.683: WARN/HttpTransport(11701): exception thrown while executing request java.io.IOException: unexpected end of stream at libcore.net.http.FixedLengthOutputStream.close(FixedLengthOutputStream.java:58) at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:88) at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:991) at com.google.api.client.googleapis.media.MediaHttpUploader.upload(MediaHttpUploader.java:279) at com.google.api.services.drive.Drive$Files$Insert.executeUnparsed(Drive.java:309) at com.google.api.services.drive.Drive$Files$Insert.execute(Drive.java:331) at com.xxxxxx.UploadImageService$2.run(UploadImageService.java:143) at java.lang.Thread.run(Thread.java:856) 

When I went through the Google Drive and client code to see what it does, it seems to work twice. But now it does not work again.

Any ideas?

+1
source share
1 answer

I think I could sort out my problem. A strange error that I received from the api disk, but in the end, I think I tried to capture images from the camera and save them only with a time stamp until the second. I added milliseconds to the file name, and so far I have not seen an exception. We will see.

0
source

Source: https://habr.com/ru/post/944410/


All Articles