我使用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());
答案 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
它解决了..