javascript - 直接链接到位于 Google Drive 上的文件
问题描述
我想要做的是创建一个指向位于我的 Google Drive 上的 mp3 文件的直接链接 URL,并将其用于 HTML5 的音频对象,但我收到 403 错误。
我知道,当尝试创建位于 Google Drive 上的文件的链接时,它创建的不是文件的直接 URL,而是用于通过查看器查看文件的 URL,例如
https://drive.google.com/file/d/<file ID>/view?usp=sharing
我用谷歌搜索发现可以将其重写为直接链接 URL,如下所示:
https://drive.google.com/uc?id=<file ID>
src
我在我的音频元素的属性中设置了这个 URL 。但是,当我尝试play()
方法时,会引发以下错误:
GET https://drive.google.com/uc?id=<file ID> 403
myProject.html:1 Uncaught (in promise) DOMException: Failed to load because no supported source was found.
https://drive.google.com/uc?id=<file ID>
所以我尝试从我的浏览器访问该 URL 。
然后,我得到了这个:
403. That’s an error.
We're sorry, but you do not have access to this page. That’s all we know.
我尝试了很多次,所以我不太可能错误粘贴<file ID>
.
我应该怎么做才能创建文件的有效直接链接 URL?我将不胜感激任何信息。
进步
我知道出了什么问题。问题在于,只有获得授权的用户才能访问 Google Drive 上的文件,这意味着只有 Google 帐户的所有者才能访问文件 URL。
我尝试从与 Google 帐户关联的 Chrome 浏览器访问它,然后,错误没有发生。
但是,我想将此文件提供给所有人。我应该怎么做才能允许其他人访问?
解决方案
您了解 Google Drive 不是文件托管服务吗?即使您确实让它工作,这个解决方案也不会很稳定。
要使其正常工作,您需要将文件设置为公开,以便每个人都可以访问它。那么我敢打赌,从长远来看,您将需要一个 API 密钥来执行此操作。
另请记住,文件 id 不稳定,例如,如果您上传文件,它可能会在将来发生变化。
推荐阅读
- mysql - 从 Mac 上的 AMPSS 安装中恢复 mysql 数据库
- mysql - 开始学SQL,需要知道怎么做%
- handlebars.js - Mustache Handlebars 中的嵌套表达式(Triple-Stash 中的表达式)
- angular - 静默更新返回 OAuthErrorEvent {type: "silent_refresh_timeout", reason: null, params: null}
- azure - 带有 OrchtestrationTrigger 的 Azure 函数不适用于本地 Azure 存储模拟器
- html - CSS Flex 行在横轴上不增长/溢出
- php - 无法声明类 HunterObfuscator,因为该名称已在使用中
- excel - VBA - 使用指定的顺序进行决胜局
- amazon-elastic-beanstalk - 如何在 AWS Elastic Beanstalk 上为我的 Node.js 应用程序添加完整的 icu 支持?
- jquery - 使用 JS 或 JQ 将单选按钮转换为只读(不禁用)