Tus server Интеграция со святыней "Работа с большими размерами загружаемых файлов> 1 ГБ" - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь интегрировать tus-сервер с shrine для загрузки видеофайлов в 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 в определенную таблицу видео.
  5. Все эти процессы необходимо выполнитьбыть возобновляемым.

Я использую vimeo_me2 gem.

Может ли кто-нибудь предоставить решение для интеграции / настройки сервера TUS со святыней.

Любойпомощь очень ценится!

1 Ответ

0 голосов
/ 23 ноября 2018

Автор tus-ruby-server и Shrine здесь:)

На мой взгляд, у вас есть два варианта: использовать "pull upload" Vimeo или загрузить напрямую в Vimeo.

A.Pull upload

Vimeo's pull upload позволяет вам дать Vimeo ссылку на ваш файл, позволить ему загружать и сохранять файл для вас.Это должно быть возобновимо, потому что tus-ruby-server поддерживает запросы диапазона , и кажется, что Vimeo будет использовать это:

Мы даже решаем любые проблемы с подключением, которые могут возникнуть.

Драгоценный камень vimeo_me2 имеет метод для загрузки по запросу.Таким образом, вы можете просто дать ему ссылку на файл TUS, например, если у вас есть Movie с вложением video:

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

B.Прямая загрузка в Vimeo

Vimeo также реализует протокол возобновляемой загрузки tus, поэтому теоретически должна быть возможность использовать Uppy для загрузки непосредственно в Vimeo.В этом случае вы могли бы избавиться от tus-ruby-server.

Я лично не пробовал этот подход.Кажется, что есть дополнительный первый шаг в создании видео, но остальная часть выглядит как стандартный протокол TUS.Это пример приложения , созданного авторами Uppy, поэтому я думаю, что вы сможете скопировать и скопировать многие вещи оттуда.


Подход I не рекомендуется загружать файл с сервера tus и загружать его в Vimeo, используя гем vimeo_me2.Во-первых, загрузка не будет возобновлена, поскольку гем down, который используется shrine-tus, еще не поддерживает возобновляемые загрузки.Во-вторых, хотя vimeo_me2 использует для загрузки протокол tus , похоже, что он ничего не делает для возобновления загрузки в случае ошибок подключения.Также кажется, что весь файл загружается в память.

В любом случае параметры A и B будут более производительными.

...