【发布时间】:2015-07-14 15:38:11
【问题描述】:
我正在一个 PHP 站点中实现 Google Picker。我可以从 Google Picker API 获取文件 ID,也可以使用 JavaScript 下载文件。以下是我在 setCallback(pickerCallback) 函数中调用的回调函数。
function pickerCallback(data) {
if (data.action == google.picker.Action.PICKED) {
var fileId = data.docs[0].id;
document.getElementById('googleFileId').value = fileId;
var name = data.docs[0].name;
var url = data.docs[0].url;
var accessToken = gapi.auth.getToken().access_token;
var request = new XMLHttpRequest();
request.open('GET', 'https://www.googleapis.com/drive/v2/files/' + fileId);
request.setRequestHeader('Authorization', 'Bearer ' + accessToken);
request.addEventListener('load', function() {
var item = JSON.parse(request.responseText);
window.open(item.webContentLink,"_self"); //Download file in Client Side
});
request.send();
}
var message = 'File ID of choosen file : ' + fileId;
document.getElementById('result').innerHTML = message;
}
我可以将文件 ID 传递给 PHP,但要下载文件,我必须再次进行身份验证。任何人都可以帮助如何在 PHP 中进行文件下载吗?
Google Developers 页面中有一个管理下载帮助,但它不适用于我https://developers.google.com/drive/web/manage-downloads。
发现了一个和这个类似的问题,但是没有答案如何在后端Download file right after picked file from google picker下载文件。
【问题讨论】:
-
如果你有文件ID,为什么不能使用files.get 获取
downloadUrl并使用它来下载文件? -
当我使用 files.get 它返回一个 404 文件未找到,因为我认为我必须再次进行身份验证才能访问文件信息(即获取 downloadUrl)。要进行身份验证,我必须创建 authurl 并要求用户进行身份验证对吗?这使得通过 Google Picker 进行两次身份验证,另一个进行下载。有没有其他办法?
-
如果您收到 404 错误,我认为您没有访问该文件的适当权限。检查以确保您这样做。
-
你能举个例子,告诉我如何用 PHP 下载文件吗?因为我完全不知道该怎么做。您能否提供在从 Google Picker 获取 fileId 之后以及在 PHP 中获取文件元数据之前要遵循的步骤,如files.get 中给出的那样。我正在尝试在 localhost 中实现这一点,这会是一个问题吗? @安迪
标签: javascript php google-picker