Google Drive SDK中的文档查看器 - Java

时间:2013-10-11 20:13:49

标签: java google-drive-api google-docs google-docs-api

我已成功使用Google云端硬盘实施Google服务帐户。现在,我可以将文件上传到服务帐户。但我无法弄清楚如何在我的网站上以嵌入的形式显示该文件。

https://doc-04-0g-docs.googleusercontent.com/docs/securesc/bc8ug145a9ddo935ikfpgr3jg35j66bd/r8o9fi9jati2in6m7ad70ppjqif4dq7n/1381514400000/05451613566453688664/05451613566453688664/0B20JX1z76nY6VjVrUl9rai16TW8?h=16653014193614665626&e=download&gd=true

https://docs.google.com/uc?id=0B20JX1z76nY6VjVrUl9rai16TW8&export=download

https://docs.google.com/file/d/0B20JX1z76nY6VjVrUl9rai16TW8/edit?usp=drivesdk

这些是分别上传的文件的downloadUrl,WebContentLink和AlternateLink。我无法在浏览器中打开这些链接。用于上传文件的代码是:

java.io.File fileContent = new java.io.File("E:\\test.txt");
            File fileMetadata = new File();
            fileMetadata.setTitle(fileContent.getName());
            InputStreamContent mediaContent = new InputStreamContent("text/plain", new BufferedInputStream(
                    new FileInputStream(fileContent)));
            mediaContent.setLength(fileContent.length());

            Drive.Files.Insert insert = getDriveService().files().insert(fileMetadata, mediaContent);

            MediaHttpUploader uploader = insert.getMediaHttpUploader();
            uploader.setDirectUploadEnabled(true);
            File file = insert.execute();

如何将文件属性设置为public,以便我的网站上的所有用户无需登录即可访问该属性?另外,我不希望用户下载此文件。

由于

2 个答案:

答案 0 :(得分:2)

嵌入文件的唯一可靠方法是为文档文件嵌入embedLink。其他文件被强制下载,因此您需要有一个代理来将它们作为网页提供。

答案 1 :(得分:0)

AlternateLink是允许您打开以查看或编辑文档的链接。 显然你必须设置权限。 设置权限相对容易。

gdrive api link

小心,它是一个列表,所以你必须确保不要继续插入新的权限。 使用googledrive,您可以使用THElink设置编辑或查看任何人。 (任何人) 这个链接是AlternateLink。

不幸的是,我无法找到阻止用户从谷歌文档编辑器文件>下载中下载文件的方法。如果你找到了,请告诉我。

但是,AlternateLink会为您提供:

https://docs.google.com/file/d/0B20JX1z76nY6VjVrUl9rai16TW8/edit?usp=drivesdk

我相信这已经过时了。

我在iframe中使用此功能,而iframe不允许谷歌更正网址。

当前网址(Google每隔几个月更改一次)是?pl = 1而不是?usp = drivesdk。 因此,如果您在新标签页中打开链接,谷歌会为您纠正此问题,但您必须在iframe中手动更改它。

您会注意到Chrome与其他行为的不同行为。 ?usp = drivesdk仍可在大多数浏览器中使用,但如果您未使用Google帐户登录,则无法在Chrome中使用。

所以简而言之,不要完全信任AlternateLink,你可能需要重写部分网址。 如果你使用iframe。