如何从 Google Drive 上传和下载文件(使用 Rest Api v3)

How to upload and download files from Google Drive (using Rest Api v3)

我正在使用以下 java 代码将文件从我的 Android 应用上传到 Google 使用 REST Api v3 的驱动器:

String UploadFileToGoogleDrive(String sFullPath, String sFileName, String sParentFolderId) {               
    com.google.api.services.drive.model.File fileMetadata = new com.google.api.services.drive.model.File();
    fileMetadata.setName(sFileName);
    fileMetadata.setParents(Collections.singletonList(sParentFolderId));
    java.io.File filePath = new java.io.File(sFullPath);
    FileContent mediaContent = new FileContent(null, filePath);
    try {
        com.google.api.services.drive.model.File file = googleDriveService.files().create(fileMetadata, mediaContent)
                .setFields("id, parents")
                .execute();
        return file.getId();
    } catch (IOException e) {            
        return null;
    }       
}

我使用此代码下载文件:

boolean DownloadFileFromGoogleDrive(String sFileId, String sDestinationPath) {       
    try {
        FileOutputStream oFileOutputStream = new FileOutputStream(new File(sDestinationPath));
        googleDriveService.files().get(sFileId).executeAndDownloadTo(oFileOutputStream);
        oFileOutputStream.close();
        return true;
    } catch (IOException e) {
        return false;
    }
}

文件已上传(显然),但当我下载它时,它不可读。尺寸也小得多。我需要上传图像和其他文件,例如我自己的应用程序设置(这不是 mime 类型),这就是我在这一行中设置 null 的原因:

FileContent mediaContent = new FileContent(null, filePath);

我也尝试过使用“image/jpeg”,但我得到了相同的结果。下载的文件不可读。

对我做错了什么有什么想法吗?我找不到很多关于 Google Drive v3 和 Android with Java.

的文档

好的,解决了。问题出在 DownloadFileFromGoogleDrive 函数中:

boolean DownloadFileFromGoogleDrive(String sFileId, String sDestinationPath) {       
    try {
        OutputStream oOutputStream = new FileOutputStream(sDestinationPath);
        googleDriveService.files().get(sFileId).executeMediaAndDownloadTo(oOutputStream);
        oOutputStream.flush();
        oOutputStream.close();
        return true
    } catch (IOException e) {
        return false;
    }
}