API Google Диска для «публикации в Интернете» файла .pptx, загруженного на Google диск

#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. Еще раз спасибо ДалмТо.