Javascript 从刚检索到的id获取Google文档
我正在开发一个Java-JSF web应用程序,其中显示一个弹出窗口,以便用户从Google Drive中选择一个文档进行下载 为此,我有一些js代码:Javascript 从刚检索到的id获取Google文档,javascript,java,jsf,google-drive-api,ajax4jsf,Javascript,Java,Jsf,Google Drive Api,Ajax4jsf,我正在开发一个Java-JSF web应用程序,其中显示一个弹出窗口,以便用户从Google Drive中选择一个文档进行下载 为此,我有一些js代码: <script src="filepicker.js"></script> <script> function initPicker() { var picker = new FilePicker({ apiKey: 'MY_API_KEY',
<script src="filepicker.js"></script>
<script>
function initPicker() {
var picker = new FilePicker({
apiKey: 'MY_API_KEY',
clientId: my_client_id,
buttonEl: document.getElementById('pick'),
onSelect : function(file) {
if (file.id) {
sendLinkToBean(file.id);
} else {
alert('Unable to download file.');
}
}
});
}
</script>
<a4j:jsFunction name="sendLinkToBean" action="#{gPPersonFormBean.downloadFile()}">
<a4j:param name="param1" assignTo="#{gPPersonFormBean.fileId}"/>
</a4j:jsFunction>
但我得到FileNotFoundException:
com.google.api.client.http.HttpResponseException: 404 Not Found
{
"error": {"theID"
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: 1tvnGWDCse4TFQwIvqEDTlvv2cebfs0C2JBtjTP5A42I.",
"locationType": "parameter",
"location": "fileId"
}
],
"code": 404,
"message": "File not found: theID."
}
}
有人知道为什么会这样吗?
提前谢谢
编辑:我刚刚将收到的id与谷歌提供的id与文件链接进行了比较,结果完全相同
编辑2:如果我执行
driveService.files().list()代码>返回一个空列表。如果您想下载谷歌文档,请使用files.export。你能反映一下下面的脚本并试一试吗
String fileId = "## file ID ##";
OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().export(fileId, "application/pdf")
.executeMediaAndDownloadTo(outputStream);
- 此示例脚本和详细信息如下所示
如果我误解了你的问题,我很抱歉。正如Tanaike所说,我必须使用export而不是get,但也必须使用ExecuteAndownloadto而不是ExecuteMedia和DownloadTo
因此,它的工作原理是:
String fileId = "## file ID ##";
OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().export(fileId, "application/pdf")
.executeAndDownloadTo(outputStream);
谢谢你的回答,但它给出了相同的错误,404文件不是found@Aldeguer很抱歉给您带来不便。我刚才看到你的编辑了。我可以问一下你想下载的文件是否在你的谷歌硬盘中吗?是的,是的,我是从一个用谷歌Picker和JS制作的硬盘文档中选择的。我试过两种方法,一种是我创建的,另一种是配偶创建的,但与我共享。没有人worked@Aldeguer关于driveService.files().list()的空代码>,您为请求设置了哪些字段?作为一个示例,您可以在您的Google驱动器上创建新的Google文档,并尝试使用脚本检索文件列表吗?如果列表中包含创建的文件,您的脚本可能可以下载该文件。嗯,我不明白您的问题,我在这方面很不在行,很抱歉。我做到了:com.google.api.services.drive.drive.Files.List=driveService.Files().List()代码>。我会试试你的样品并告诉你结果。谢谢你,伙计
String fileId = "## file ID ##";
OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().export(fileId, "application/pdf")
.executeAndDownloadTo(outputStream);