【问题标题】:Tus server Integration with shrine "Dealing with large uploads filesize > 1 gb"启迪服务器与神社集成“处理大型上传文件大小> 1 gb”
【发布时间】:2019-04-26 00:07:13
【问题描述】:

我正在尝试将 tus-servershrine 集成以将视频文件上传到 Vimeo。

Client.js

this.uppy = new Uppy({
  id: 'uppy1',
  autoProceed: false,
  debug: true,
  restrictions: {
    allowedFileTypes: ['.mp4'],
  },
  allowMultipleUploads: true,
})
  .use(Tus, { endpoint: `${API_BASE}/files` })
 /* .use(XHRUpload, { endpoint: `${API_BASE}/files`,
    formData: true,
    bundle: false,
    fieldName: 'file',
    headers: getHeaders(), */
 })
  .use(GoogleDrive, { serverUrl: 'https://companion.uppy.io' })
  .use(Dropbox, { serverUrl: 'https://companion.uppy.io/' });

# config/routes.rb (Rails)
Rails.application.routes.draw do
  mount Tus::Server => "/files"
end

这里默认tus服务器,直接将文件上传到data/文件夹,在项目根目录下有一个文件。

我想要实现的是将video文件上传到Vimeo

喜欢:

  1. 文件转到${API_BASE}/files
  2. 矿工获取文件
  3. 我将文件传递给 Vimeo(使用 vimeo_me2
  4. Vimeo上传文件,把video_url发回去,我现在把video_url插入到某个video表中。
  5. 以上所有这些过程都需要可恢复。

我正在使用vimeo_me2 gem。

谁能提供一个解决方案来集成/配置 tus 服务器与神社?

非常感谢任何帮助!

【问题讨论】:

    标签: javascript ruby-on-rails shrine tus


    【解决方案1】:

    tus-ruby-server 和 Shrine 的作者在这里 :)

    就我而言,您有两个选择:使用 Vimeo 的“拉上传”,或直接上传到 Vimeo。

    A.拉取上传

    Vimeo 的pull upload 允许您将文件链接提供给 Vimeo,并让它为您下载并保存文件。这应该是可以恢复的,因为 tus-ruby-server 支持range requests,而且似乎 Vimeo 会使用它:

    我们甚至会处理可能出现的任何连接问题。

    vimeo_me2 gem 有一个 method 用于拉取上传。所以你可以给它 tus 文件的链接,例如,如果你有一个 Movie 和一个 video 附件:

    vimeo_client.pull_upload("Name of video", movie.video.url)
    

    B.直接上传到 Vimeo

    Vimeo 也是implements tus 的可恢复上传协议,所以理论上应该可以使用Uppy 直接上传到Vimeo。在这种情况下,您可以摆脱tus-ruby-server

    我没有亲自尝试过这种方法。似乎有一个额外的创建视频的第一步,但其余部分看起来像标准的 tus 协议。这是由 Uppy 的作者创建的 example app,所以我认为您应该能够从那里复制粘贴很多东西。


    推荐的方法是从 tus 服务器下载文件并使用 vimeo_me2 gem 将其上传到 Vimeo。首先,下载将无法恢复,因为shrine-tus 使用的down gem 尚不支持可恢复下载。其次,虽然vimeo_me2 uses the tus protocol 用于上传,但在连接错误的情况下似乎没有任何恢复上传的功能。它似乎也将整个文件加载到内存中。

    无论如何,选项 A 和 B 的性能会更好。

    【讨论】:

    • ATM 我不会处理方法 A。方法 B 可能是我正在寻找的。如果我实现从客户端直接上传到 Vimeo,我需要查看从 Vimeo 发送的成功或错误响应,并向我的服务器发送 API 请求,如果响应成功,则使用 Vimeo data_url 更新视频表。
    • ATM 我不处理 Oauth。我将只使用来自 vimeo 的公共access_token,每个用户都可以在我的帐户中上传视频。 (没有 oauth 要求)。我看了vimeo-uppy-thing。它涉及整个oauth程序,我什至没有得到太多。我担心的是用户从 uppy 仪表板中选择视频,然后单击上传按钮,视频会上传到 Vimeo。就是这样(没有 oauth)。
    • 据我所知,这是仅有的两种性能可以接受的解决方案,而且都是可实施的。
    • 所以,如果我需要将视频上传到 AWS s3 存储桶。我应该采取什么方法?使用 uppy aws s3 multipart 插件。
    • 文档说我需要为此创建一个配套服务器?
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2021-07-30
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    相关资源
    最近更新 更多