【问题标题】:Best way to show image previews before upload in rails & carrierwave在rails和carrierwave中上传之前显示图像预览的最佳方式
【发布时间】:2012-07-14 05:14:00
【问题描述】:

过去几天我一直在使用 rails,想知道在上传到 rails 和 carrierwave 之前显示图像预览的最佳方式。

我遇到了一些选项,例如使用 plupload 或 jquery 文件上传或使用 uploadify。

【问题讨论】:

    标签: ruby-on-rails image upload carrierwave preview


    【解决方案1】:

    如果您只需要在上传之前在表单中预览图像,您(和我一样)会发现 JQuery Upload 插件太复杂而且不太容易正常运行(我能够看到预览,但后来我无法上传图片)。

    http://saravani.wordpress.com/2012/03/14/preview-of-an-image-before-it-is-uploaded/

    编码简单快捷。

    我把代码放在这里以防源代码失效:

    脚本:

        <!-- Assume jQuery is loaded -->
        <script>
          function readURL(input) {
            if (input.files && input.files[0]) {
              var reader = new FileReader();
    
              reader.onload = function (e) {
                $('#img_prev')
                  .attr('src', e.target.result)
                  .width(150)
                  .height(200);
              };
    
              reader.readAsDataURL(input.files[0]);
            }
          }
        </script>
    

    在 HTML 中:

        <!--[if IE]>
          <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        </head>
        <body>
          <input type='file' onchange="readURL(this);" />
          <img id="img_prev" src="#" alt="your image" />
        </body>
    

    【讨论】:

    • 我认为它使用了一些 HTML5 功能,这可能是原因。
    • IE 没有 FileReader 类
    • @Puce 用于多个图像MDN has a good example。这个 MDN 页面还显示了浏览器兼容性
    【解决方案2】:

    您可以使用插件jQuery File Upload,它是一个完整的解决方案,但如果您需要一些不太强大的东西,您也可以尝试直接使用FileReader,例如this,这样您就可以根据需要自定义功能.

    【讨论】:

      【解决方案3】:

      根据文件image_cache 显示您正在上传的内容。

      <%= f.hidden_field :image_cache %>
      

      【讨论】:

      • 哪个文件?有什么参考资料吗?
      • 如果您提供对文档的任何参考,那就更好了。
      • 此功能用于跨提交重新显示,而不是用于预览。
      • 我使用了这个功能,但是如果用户去他的个人资料更改他的姓氏,它需要他再次上传图片,尽管它已经在之前的会话中加载,并且图片可见。不知道如何处理。
      猜你喜欢
      • 2013-08-13
      • 2014-03-17
      • 1970-01-01
      • 2011-05-26
      相关资源
      最近更新 更多