#java #google-drive-api
Вопрос:
Я успешно загружаю файл .pptx на Google диск из своего веб-приложения java. Я дал разрешение на общий доступ к файлу. Я хочу опубликовать его в Интернете из своего приложения, чтобы получить код для встраивания или ссылку, которую я могу использовать для встраивания слайда на свой веб-сайт. Я попытался изменить ссылку webViewLink и поместил ее в iframe, но она не отображает содержимое. Может ли кто-нибудь, пожалуйста, помочь мне достичь этого на java. Ниже приведен код, который я использую, а также ссылка iframe, которую я использую на своей HTML-странице.
public String uploadFile(String fileName, java.io.File convFile) throws IOException, GeneralSecurityException {
String linkPrefix = "https://docs.google.com/presentation/d/";
String linkSufix = "/embed?start=trueamp;loop=trueamp;delayms=5000amp;rm=minimal";
File fileMetadata = new File();
fileMetadata.setName(fileName);
fileMetadata.setMimeType("application/vnd.openxmlformats-officedocument.presentationml.presentation");
//fileMetadata.setMimeType("application/vnd.google-apps.presentation");
//fileMetadata.setParents(Collections.singletonList(folderId));
FileContent mediaContent = new FileContent("powerpoint/pptx", convFile);
File file = driveClient.files().create(fileMetadata, mediaContent)
.setFields("id, webViewLink, headRevisionId, webContentLink")
.execute();
Permission permission = new Permission();
permission.setRole("reader");
permission.setType("anyone");
String webViewLink = file.getWebViewLink();
String webContentLink = file.getWebContentLink();
String uniqueFileId = file.getId();
String revisionId = file.getHeadRevisionId();
Log.info("revisionId :" revisionId);
driveClient.permissions().create(uniqueFileId, permission).execute();
Revision content = new Revision();
content.setPublishAuto(true);
content.setPublished(true);
content.setPublishedOutsideDomain(true);
Revision link = driveClient.revisions().update(uniqueFileId, revisionId, content).execute();
Log.info(link.toPrettyString());
Log.info("File WebViewLink======>>>>>>" file.getWebViewLink() " : " file.getId() " : " revisionId " : " webContentLink);
String uniqueLink = webViewLink.replace("edit?", "embed?");
//uniqueLink = webViewLink;
uniqueLink = uniqueLink linkSufix;
//String uniqueLink = linkPrefix uniqueFileId linkSufix;
String returnLink = uniqueLink;
System.out.println("Content Link :" returnLink);
return returnLink;
}
<iframe src="https://docs.google.com/presentation/d/1keAUxA01xnEpkxSjyGOyL4G7UuMpA245/embed?usp=drivesdkamp;amp;ouid=104530993132444783441amp;amp;rtpof=trueamp;amp;sd=trueamp;amp;start=trueamp;amp;loop=trueamp;amp;delayms=5000amp;amp;rm=minimal" frameborder="0" width="100%" height="100%" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
Комментарии:
1. Wbviewlink будет работать только в том случае, если это файл слайдов Google «приложение/vnd.google-приложения.презентация» и если текущий пользователь имеет к нему доступ. Я не думаю, что веб-приложение Google Drive позволит вам открыть его в iframe, попробуйте открыть его в новом окне.
2. Спасибо, ДалмТо. Когда я использую «приложение/vnd.google-приложения.презентация», оно выдает исключение nullpointerexception для идентификатора редакции.
3. Но когда я удаляю код для пересмотра, он действительно работает так, как ожидалось. Большое спасибо.
Ответ №1:
public String uploadFile(String fileName, java.io.File convFile) throws IOException, GeneralSecurityException {
String linkPrefix = "https://docs.google.com/presentation/d/";
String linkSufix = "/embed?start=trueamp;loop=trueamp;delayms=5000amp;rm=minimal";
File fileMetadata = new File();
fileMetadata.setName(fileName);
fileMetadata.setMimeType("application/vnd.google-apps.presentation");
FileContent mediaContent = new FileContent("powerpoint/pptx", convFile);
File file = driveClient.files().create(fileMetadata, mediaContent)
.setFields("id, webViewLink, headRevisionId, webContentLink")
.execute();
Permission permission = new Permission();
permission.setRole("reader");
permission.setType("anyone");
String webViewLink = file.getWebViewLink();
String webContentLink = file.getWebContentLink();
String uniqueFileId = file.getId();
String revisionId = file.getHeadRevisionId();
Log.info("revisionId :" revisionId);
driveClient.permissions().create(uniqueFileId, permission).execute();
Log.info("File WebViewLink======>>>>>>" file.getWebViewLink() " : " file.getId() " : " revisionId " : " webContentLink);
String uniqueLink = webViewLink.replace("edit?", "embed?");
uniqueLink = uniqueLink linkSufix;
String returnLink = uniqueLink;
System.out.println("Content Link :" returnLink);
return returnLink;
}
Комментарии:
1. Еще раз спасибо ДалмТо.