2016-05-30 1 views
0

Я пытаюсь загрузить изображение png/jpg менее 10 килобайт в s3 amazon. Загрузка выполняется успешно, но файл загружается и сохраняется с 0 байтами.Загрузить изображение на S3 Amazon получить 0 байт

Когда я пытаюсь увидеть изображение в ссылке, предоставленной s3-, я получаю пустой.

Если я загружаю изображение размером более 10 килобайт, все в порядке.

Может кто-нибудь понять, в чем проблема, пожалуйста?

file_name = account[:img_token] + File.extname(img.original_filename) 
file = Tempfile.new(file_name, encoding: 'ascii-8bit') 
file.write(img.read) 
path = file.path 
bucket_name = 'bucket' 
s3 = AWS::S3.new(access_key_id: ENV['S3_ACCESS_KEY'], secret_access_key: ENV['S3_SECRET_ACCESS_KEY']) 
link = 'https://s3-eu-west-1.amazonaws.com/' + bucket_name + '/' + file_name 
key = file_name 
object = s3.buckets[bucket_name].objects[key].write(file: path, acl: 'public-read') 
+0

Я сомневаюсь, что размер является причиной. Я загружал (программно) всевозможные размеры (в том числе менее 10K). Никогда не было никаких проблем. Я думаю, что пример кода будет полезен. – Seva

+0

@seva Спасибо, я добавил код. – Zvi

+0

@seva Когда я пытаюсь загрузить вручную внутри s3, это нормально – Zvi

ответ

0

В соответствии с этим answer

писать, читать и удалять объекты, содержащие от 1 байта до 5 терабайт данных каждый. Количество объектов, которые вы можете сохранить, не ограничено.

+0

Спасибо, но исходный файл 2k mote than 1 byte – Zvi

+0

Попробуйте загрузить txt-файл с тем же размером. –

+0

Я загрузил txt-файл 3.8k, и все в порядке с нужного размера. – Zvi

1

Похоже, вы передаете файл в SDK, который запрашивается в конце файла. Я подозреваю, что SDK вызывает #read и получает нуль. Сначала попробуйте перемотать файл.