Я использую драгоценный камень s3_direct_upload для загрузки изображений в s3 с Rails. Этот драгоценный камень основан на this Railscast и использует jQuery-file-upload. Он работает хорошо.Rails - изменить размер изображения перед загрузкой в s3
Теперь я хочу изменить размеры моих изображений перед их загрузкой. fork was created способ осуществить это, но автор отметил, что:.
«Я должен был закомментировать метод добавления, поскольку он останавливает очередь процесса я не знаю, почему ... Но так как я не был одновременно загружая много файлов, похоже, мне не нужен этот обратный вызов ».
Я смог реализовать эту вилку, но индикатор выполнения и события загрузки больше не вызываются, поэтому я попытался реализовать вилку, чтобы реализовать все мои функции.
CoffeeScript ниже код не выдает какую-то ошибку, но это не делает изменение размера либо:
setUploadForm = ->
$uploadForm.fileupload
disableImageResize: /Android(?!.*Chrome)|Opera/.test(window.navigator && navigator.userAgent)
imageMaxWidth: settings.image_max_width
imageMaxHeight: settings.image_max_height
disableImagePreview: true
Так что теперь я пытаюсь заменить add
событие, как полагает автор, но я борюсь с логика. Исходный код выглядит следующим образом:
add: (e, data) ->
file = data.files[0]
file.unique_id = Math.random().toString(36).substr(2,16)
unless settings.before_add and not settings.before_add(file)
current_files.push data
if $('#template-upload').length > 0
data.context = $($.trim(tmpl("template-upload", file)))
$(data.context).appendTo(settings.progress_bar_target || $uploadForm)
else if !settings.allow_multiple_files
data.context = settings.progress_bar_target
if settings.click_submit_target
if settings.allow_multiple_files
forms_for_submit.push data
else
forms_for_submit = [data]
else
data.submit()
и автор заменил выше:
send: (e, data) ->
file = data.files[0]
if settings.before_send
settings.before_send(file)
Я хотел бы заменить add
с send
, если он собирается разрешить изображения, чтобы изменить размер, но я также хочу сохранить индикатор выполнения загрузки и загрузить события. Я попытался заменить before_add
с before_send
, но он создает бесконечный цикл:
unless settings.before_send and not settings.before_send(file)
Моя вилка может быть найдена here
Вы взглянули на RMagick и carrierwave или carrierwave_direct? – jcm
Я читал статью о загрузке на s3, и в отношении carrierwave_direct они заявили: «Я нашел ее довольно дрянной, так как она заставляет вас менять настройки несущей волны (удаляя метод store_dir, на самом деле?), И это работает только для одного файл". Мне понравилась jQuery-File-Upload, потому что она имеет индикатор выполнения и была легко реализована. Плюс в Railscast Райан проходит много шагов, чтобы загрузить s3 с поддержкой wavewave, снова jQuery-File-Upload выглядел более прямолинейно. – Marklar
Спустя годы, но я пытаюсь найти решение для этого ... кто-нибудь понял это? –