是否可以在网页上显示我的驱动器中的文档?我希望用户能够直接从我的驱动器单击文档并下载它。我该怎么做呢?谢谢你的建议。
答案 0 :(得分:5)
最快最简单的解决方案是使用iframe嵌入文件夹(不需要javascript)。显然,这也是最不灵活的解决方案,尽管您可以使用CSS来更改iframe内容的布局(见下文)。
Google云端硬盘不允许嵌入您通常使用的网址。它的X-Frame-Options标头设置为“SAMEORIGIN”,阻止在iframe中使用。因此,您必须使用以下链接,将允许嵌入:
https://drive.google.com/embeddedfolderview?id=DOCUMENT_ID#VIEW_TYPE
DOCUMENT_ID 是普通共享链接(看起来像https://drive.google.com/folderview?id=DOCUMENT_ID)中提到的ID,因此您只需从中复制即可。
VIEW_TYPE 应为'grid'或'list',具体取决于您的偏好。
如果您需要更改iframe内容的样式,请查看this solution。
答案 1 :(得分:3)
对于HTML / JavaScript解决方案,请查看以下链接:
https://developers.google.com/drive/quickstart-js
https://www.youtube.com/watch?v=09geUJg11iA
https://developers.google.com/drive/web/auth/web-client
这是使用JavaScript的最简单方法,大部分复杂性都在于
您的WebApp授权。以下示例读取您指定的文件夹中的文件ID,名称和说明
- 转到:https://cloud.google.com/console/project
并创建一个新项目“xyz”
- 选择“API& auth”,禁用您不需要的,启用“Drive API”
- 选择“凭据”,
按“创建新客户ID”按钮
x Web应用程序
授权的Javascript来源:“https://googledrive.com/”
授权重定向URI:“https://googledrive.com/oauth2callback”
它将导致:
客户ID:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
电子邮件地址:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com
客户机密:xxxxxxxxxxxxxxxxxxxx
重定向URI:https://googledrive.com/oauth2callback
Javascript起源:https://googledrive.com/
- 在下面的代码中,替换
CLIENT_ID with xxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
FOLDER_ID包含您在文件夹地址行中看到的ID,
https://drive.google.com/?tab=mo&authuser=0#folders/xxxxxxxxxxxxxxxxxxx
- 运行它,授权
我不知道你是否读过JS,代码可以自下而上,我做的就是尽可能简单。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var FOLDER_ID = '.xxxxxxxxxxxxxxxxxx'; // the folder files reside in
var CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
var SCOPE = //'https://www.googleapis.com/auth/drive';
[
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file', // for description,
];
function rsvpCB(resp) {
var picAlbumLst = '<ul>\n';
for (i=0; i<resp.items.length; i++)
picAlbumLst += (
' <li>'+resp.items[i].id+', '+resp.items[i].title+', '+resp.items[i].description+'</li>\n');
picAlbumLst += "</ul>\n";
$('#container').append(picAlbumLst);
}
function rqstCB() { //test @ https://developers.google.com/drive/v2/reference/files/list
var rv = gapi.client.drive.files.list({
'q': '"'+FOLDER_ID+'" in parents and trashed = false',
'fields' : 'items(id,title,description)' //'items(id,title,description,indexableText)'
}).execute(rsvpCB);
}
// authorization server reply
function onAuthResult(authResult) {
var authButton = document.getElementById('authorizeButton');
authButton.style.display = 'none';
if (authResult && !authResult.error) { // access token successfully retrieved
gapi.client.load('drive', 'v2', rqstCB);
} else { // no access token retrieved, force the authorization flow.
authButton.style.display = 'block';
authButton.onclick = function() {
checkAuth(false);
}
}
}
// check if the current user has authorized the application.
function checkAuth(bNow) {
gapi.auth.authorize({'client_id':CLIENT_ID, 'scope':SCOPE, 'immediate':bNow}, onAuthResult);
}
// called when the client library is loaded, look below
function onLoadCB() {
checkAuth(true);
}
</script>
<script src="https://apis.google.com/js/client.js?onload=onLoadCB"></script>
<body style="background-color: transparent;">
<input type="button" id="authorizeButton" style="display: none" value="Authorize" />
<div id="container">
</div>
</body>
答案 2 :(得分:1)
这应该使用Google API来完成。您可以在google上搜索google drive php api list files
。我还在SO上找到了this和this。
答案 3 :(得分:1)
read access
,则在前端使用JavaScript,jQuery等是可行的选择。您也可以在PHP中执行此操作,这只是个人偏好的问题。Javascript Origins
设置为http://localhost
File
然后Publish to Web
,您将获得一个可嵌入的HTML iFrame标记进入你的网页。您可以更改iFrame的高度和宽度以匹配文档大小。 iFrame Instructions W3Schools FILE
然后选择DOWNLOAD AS
,即可从联机文档的在线版本轻松下载文档。Git Hub
,您可能会在那里找到一些内容。