Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从刚检索到的id获取Google文档_Javascript_Java_Jsf_Google Drive Api_Ajax4jsf - Fatal编程技术网

Javascript 从刚检索到的id获取Google文档

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',

我正在开发一个Java-JSF web应用程序,其中显示一个弹出窗口,以便用户从Google Drive中选择一个文档进行下载

为此,我有一些js代码:

<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);