【问题标题】:Generating preview image thumbnails of uploaded files on Rails在 Rails 上生成上传文件的预览图像缩略图
【发布时间】:2016-11-27 01:45:52
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • Cloudinary 将比在 AWS 中实施自己的图像基础设施成本更高。 AWS 中有一个解决方案可用于动态生成图像缩略图并为动态图像应用其他转换,此处解释为 youtu.be/VuZNvCGIilI
    【解决方案2】:

    此链接可能会对您有所帮助: 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

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

    【讨论】:

      【解决方案3】:

      正如 John 所写,对于您的图像,您可以尝试使用 Cloudinary 的 jQuery image upload 库之类的解决方案即时生成缩略图。该解决方案支持将图像上传到云端。利用 Amazon 的 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

      【讨论】:

        猜你喜欢
        • 2012-06-13
        • 2016-12-17
        • 2013-04-12
        • 1970-01-01
        • 2014-05-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-22
        • 1970-01-01
        相关资源
        最近更新 更多