我正在使用s3_direct_upload gem通过Rails将图像上传到s3。这个宝石是基于this Railscast和使用jQuery-file-upload。它运作良好。Rails - 在上传到s3之前调整图像的大小
我现在想在上传图片之前调整图片大小。一个fork was created一种方式来实现这一点,但笔者提到:
“我不得不注释掉add方法,因为它会暂停处理队列,我不知道为什么......但因为我不是同时上传很多文件,但似乎我并不需要这种回调。“
我已经能够实现这个fork,但进度条和上传事件不再被调用,所以我试图自己实现一个fork来实现我所有的功能。
下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)
我想与send
更换add
如果要允许图像调整,但我也想保持上传进度条并上传事件。我曾尝试更换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中,Ryan经历了很多步骤,以使s3上传与carrierwave一起工作,而jQuery-File-Upload似乎更直接。 – Marklar
多年后,但我试图找到一个解决方案,以及...任何人都明白这一点? –