Rails + javascript – 上传前的图片预览
我想在上传之前显示图像预览,因为我使用下面给出的代码。
它适用于Firefox,但不适用于IE8
"preview-photo" %> "preview(this);" %> function preview(this) { document.getElementById("preview-photo").src = this.value; return; }
有没有解决方案在IE8和其他浏览器中预览图像?
我使用https://github.com/blueimp/jQuery-File-Upload进行文件上传。
在这个jQuery插件的规范中,你可以阅读:
可以在支持URL或FileReader接口的浏览器上为本地图像文件加载和显示预览图像。
IE8不符合HTML5,因此与FileReader不兼容。 您应该使用flash或朋友来实现这一目标。
Firefox符合HTML5标准……
此解决方案的工作方式类似于魅力,并且具有Internet Explorer的条件加载,因此它应该适合您。
我把代码放在这里,以防源死:
脚本:
在HTML中:
在ERB中:获取输入,并为其指定一个类名和动态ID,并使用dyanamic id创建一个图像标记,您将在其中显示预览图片。
<%= f.file_field :photo, :class => 'photo_upload', :id => "image_https://stackoverflow.com/questions/5593866/railsjavascript-image-preview-before-upload/#{image.id}" %> <%= image_tag("preview.png", :id => "image_https://stackoverflow.com/questions/5593866/railsjavascript-image-preview-before-upload/#{image.id}_medium") %>
在JAVASCRIPT中:
function readURL(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $(document.getElementById(input.id + "_medium")).attr('src', e.target.result); } reader.readAsDataURL(input.files[0]); } } $(".photo_upload").change(function(){ readURL(this); });
我为IE用户制作了一个纯粹的JS解决方案: http : //mootools.standupweb.net/dragndrop.php
- 使用javascript_include_tag在rails 3.2.8引擎中执行ExecJS :: RuntimeError
- 带有ajax的Select2使用Rails turbolinks事件多次初始化
- Ruby on Rails – 将JavaScript变量从控制器发送到外部Javascript资产文件
- 如何从命令行运行QUnit测试?
- 如果禁用Javascript,请停止加载页面
- 最有效的方法是让一个Three.js项目在rails应用程序的ruby中工作?
- Rails内联Javascript和最佳实践
- Rails 3自动添加X-UA-Compatible标头?
- 确保用户使用cookieStore和AngularJS登录或注销的最佳实践