【问题标题】:Soundcloud: Is there a way to upload a file via HTML and JS?Soundcloud:有没有办法通过 HTML 和 JS 上传文件?
【发布时间】:2013-11-07 07:13:32
【问题描述】:

有谁知道是否有一种方法可以上传用户选择的文件(典型的基于 HTML 的文件输入标签),而不受 SoundCloud API 中的当前限制(似乎仅限于录制本地音频)?

我用 Vimeo 的 API 实现了类似的东西,如下所示:

  1. 获取访问令牌以避免必须使用 OAuth 或要求用户成为 Soundcloud 用户才能上传到我的帐户。
  2. 向 API 发布请求以获取上传令牌和 URL。
  3. 使用用户使用 HTML5 的文件 API 选择的文件对上传 URL 执行 HTTP PUT - 请注意,这要求用户通过标头接受请求。
  4. 检查上传状态(在 Vimeo 的情况下,您只需在没有数据的情况下使用上传 URL 中的票证 ID 重新 PUT)。
  5. 完成后,再次调用 API 以完成该过程并触发转码。

我实际上是在尝试让用户上传音频文件,并将文件本身直接发送到 Soundcloud 和我在那里的帐户,而不是上传到我的服务器,并通过从我的服务器上传到 Soundcloud 来使工作量翻倍。

我看到 SoundCloud JS Api 支持 PUT 用于其他任务。我不介意直接手动执行 XHR/Ajax 调用(我正在使用 jQuery.ajax),但是由于 JS SDK 隐藏了一点进程,我不知道如何确定如何处理它,如果我可以的话全部。

有人尝试过或者碰巧知道如何实现吗?

【问题讨论】:

  • 你有没有得到这个?我正在尝试完全相同的事情...您可能认为现在 Soundcloud 是基于“免费增值”的商业模式,他们会让这很容易做到...
  • 不。我最近没有检查他们是否更新了 API 以支持这一点。不管他们的模型是什么,您都在谈论可能有多个 MB 数据要传输的情况。至少没有直接上传文件的途径似乎毫无意义。 Vimeo 支持这一点,它很棒。获取上传票证,对他们的服务器执行 PUT,然后就完成了。

标签: javascript html api file-upload soundcloud


【解决方案1】:

这是不可能的(对所有人)。

在以下 soundcloud API 文档页面上的“在没有 SoundCloud 连接屏幕的情况下进行身份验证”部分中: https://developers.soundcloud.com/docs/api/guide#authentication

上面写着:

我们的服务条款规定您必须使用 Connect with SoundCloud 屏幕除非您与我们另行安排。

因此,除非您与 soundcloud 有交易, 无需先进行身份验证,您就无法“自动”让程序上传声音(或对 soundcloud 进行任何修改)。

【讨论】:

  • 你不明白我在说什么。我不想访问另一个用户的帐户。我正在使用我的 OWN 专业帐户。但 SoundCloud 希望我提示其他用户登录,而不是让我将音频上传到我的帐户。这不是一件不寻常的事情。 Soundcloud 只是不关心支持该过程。
  • 我想我理解这个问题,但您希望用户代表您做某事而无需登录某个地方。我目前正在尝试让 cronjob 使用我存储在数据库中的身份验证令牌(我的)在 soundcloud 上执行操作(重新创建播放列表),以便使用我的 soundcloud 帐户执行操作。我会让你知道我的发现是什么,干杯
  • 基本上,是的。一种预授权。我不介意使用服务器代码获取身份验证令牌,我可以将其合并到 URL 中,然后 JS 中的客户端代码使用该 URL 执行 PUT 以将文件获取到 SoundCloud 服务器。如果不需要的话,我只是不想通过我的服务器传递所有这些数据字节(音频)。
  • @KenLFG 我成功地让服务器在 cronjob 中使用我的访问令牌执行操作。我得救了!呸! :) 我考虑过你的问题,认为不可能做你想做的事。通过您的服务器的过程应该是可能的。但是随着数据的上传——正如你所说——你还必须处理流量,这不是你想要的。如果使用 JS api,您的 accesstoken 会暴露,这可能是不好的做法。此外 - 当调用来自 js lib 时,我想 soundcloud 服务器代码很容易找出 accesstoken 不属于当前用户。
  • 嗯,在实践中很糟糕,但也许是做我需要的唯一方法(该帐户没有用于其他任何事情)。我曾想过让服务器进程协商访问令牌并将其拖放到页面上。因此,基本上处理握手以获取访问令牌,然后将其交给客户端使用。仍然不理想,但如果您的访问令牌 cronjob 有效,则可以工作......
猜你喜欢
  • 2018-05-07
  • 1970-01-01
  • 2018-09-21
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 2011-09-19
相关资源
最近更新 更多