在Rails上生成上传文件的预览图像缩略图

时间:2016-11-27 01:45:52

标签: ruby-on-rails-3 ruby-on-rails-4 file-upload amazon-s3 carrierwave

我使用Rails创建一个网站,允许用户上传各种文件格式的文档文件(pdf,doc,docx,ppt,pptx,xls,xlsx,png,jpg,jpeg)并存储它们aws S3。 我使用Carrierwave直接将文件上传到S3,到目前为止一切运行良好。上传的文件很好地存储在S3中。

但现在,我想显示上传文件的预览图像(缩略图)。我通过操作Carrierwave配置尝试了几种不同的方法,但似乎生成缩略图只适用于PDF文件,而不适用于其他文件格式。任何人都可以给我任何见解让这项工作?感谢

3 个答案:

答案 0 :(得分:1)

您可以考虑使用可以即时生成缩略图的系统,而不是在应用程序中生成缩略图,例如:

答案 1 :(得分:0)

此链接可能对您有所帮助: http://guides.railsgirls.com/thumbnails

我还找到了一个教程,说你应该可以取消注释image_uploader文件中的一些代码。

version :thumb do
  process :resize_to_fill => [50, 50]
end

https://code.tutsplus.com/tutorials/rails-image-upload-using-carrierwave-in-a-rails-app--cms-25183

看看这些解决方案是否有效。

答案 2 :(得分:0)

正如约翰所写,对于你的图像,你可以尝试使用像Cloudinary的jQuery image upload库这样的解决方案来动态生成缩略图。此解决方案可将图像上载到云端。使用亚马逊的S3服务,上传的图像通过安全备份和修订历史安全地存储在云中。

Cloudinary的jQuery库还可以实时生成缩略图。

下面是一个示例代码,用于创建上传图像的150x100缩略图,并使用此图像的公共ID更新输入字段。

$('.cloudinary-fileupload').bind('cloudinarydone', function(e, data) {  
$('.preview').html(
$.cloudinary.image(data.result.public_id, 
  { format: data.result.format, version: data.result.version, 
    crop: 'fill', width: 150, height: 100 })
);    
$('.image_public_id').val(data.result.public_id);    
 return true;
});

您可以在这里找到一些Ruby on Rails examples