Google Drive Api [将文件上载到服务帐户未在浏览器中显示]

时间:2015-04-20 13:01:05

标签: java google-drive-api

我使用java google drive api上传文件。 我的问题是上传文件后我没有从谷歌硬盘找到上传的文件。 如何在Web浏览器中看到该文件。 有什么想法请帮助我吗?

我的java代码是:

    HttpTransport httpTransport = new NetHttpTransport();
    JsonFactory jsonFactory = new JacksonFactory();

    try {
        GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport).setJsonFactory(jsonFactory).setServiceAccountId(IRingeeConstants.SERVICE_ACCOUNT_EMAIL)
                .setServiceAccountScopes(Collections.singleton(DriveScopes.DRIVE)).setServiceAccountPrivateKeyFromP12File(new java.io.File("G:\\Ringee-1a1f1b786226.p12")).build();

        Drive service = new Drive.Builder(httpTransport, jsonFactory, credential).setApplicationName(IRingeeConstants.APPLICATION_NAME).build();

        printAbout(service);

        File body = new File();
        body.setTitle("ringeeprofileimage");
        body.setDescription("ringeeapp");
        body.setMimeType("application/vnd.google-apps.folder");

        java.io.File fileContent = new java.io.File("G:\\document.txt");
        FileContent mediaContent = new FileContent("text/plain", fileContent);

        File file = service.files().insert(body, mediaContent).execute();
        System.out.print("file id is :" + file.getId());

2 个答案:

答案 0 :(得分:2)

您正在使用服务帐户上传文件。服务帐户不是您。将服务帐户视为由服务帐户电子邮件地址标识的虚拟用户。

服务帐户是他自己的云端硬盘帐户,Google日历,.....

因此上传文件时,他们只是上传到您无法使用Web界面访问的服务帐户驱动器帐户。

如果您希望能够看到它们,则需要让服务帐户访问您的Google云端硬盘帐户中的目录,将其上传到该目录,然后在插入后修改权限以允许您的个人帐户访问文件。这必须分两步完成,这是一个奇怪的错误。

答案 1 :(得分:0)

在下面添加以下代码:

Permission newPermission = new Permission();
        //for showing files in browser that reason only using additional permission 
        newPermission.setValue(IRingeeConstants.USER_ACCOUNT_EMAIL);
        newPermission.setType("user");
        newPermission.setRole("writer");
        service.permissions().insert(file.getId(), newPermission).execute();

用户帐户邮件只是服务电子邮件ID,如nmkkannan@gmail.com

它解决了..