Ruby on Rails Скачать S3 видео файл - PullRequest
0 голосов
/ 17 января 2019

Хотите скачать файл с подписанным видео S3 ... но вместо того, чтобы его скачивать, он будет проигрываться ...

Использование send_data S3 download

send_data open(file).read, filename: 'archive12.mp4', type: 'video/mp4', disposition: 'attachment'

Видеофайл = "https://s3 -eu-west-1.amazonaws.com / tokboxhub.mangoapps.com / 46250362 / 2e1ad9d5-8240-41d2-82bc-38c34bf92e7e / archive.mp4? X-Amz- Алгоритм = AWS4-HMAC-SHA256 и X-Amz-Credential = AKIAJCPWVPHOCSAJPE5A% 2F20190117% 2Feu-запад 1% 2Fs3% 2Faws4_request & X-Amz-Date = 20190117T181610Z & X-Amz-Истекает = 9000 & X-Amz-SignedHeaders = хост и X-Amz-Signature = a26d991341b5349f1f1e3afb820883b2187bc6151f395506add87cc78daa15ff"

1 Ответ

0 голосов
/ 17 января 2019

Вы используете open(file).read. Следовательно, он читает файл и воспроизводит его. Может быть, удалить .read. Попробуйте добавить флаг stream. Посмотрите на send_file тоже: https://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_file.

ИЛИ Возможно, используйте aws-sdk?

require 'aws-sdk'

s3 = Aws::S3::Resource.new(
region: 'us-east-1',
access_key_id: '...',
secret_access_key: '...'
)

s3.bucket('bucket-name').object('key').get(response_target: '/path/to/file')

Если вы все еще хотите использовать send_data, возможно, попробуйте:

data = open("https://s3.amazonaws.com/PATTH TO YOUR FILE") 
send_data data.read, filename: 'archive12.mp4', stream: false, type: 'video/mp4', disposition: 'attachment'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...