如何预览上传的图像即时与回形针在Ruby的轨道

5gfr0r5j  于 2023-03-12  发布在  Ruby
关注(0)|答案(3)|浏览(97)

基本上,我想完成的是让用户预览他们上传的图像之前,他们提交它。
在控制器中,我有

def index
    @temp = Temp.new
end

既然@temp没有保存,我还能使用Rails: Paperclip & previews的解决方案吗?如果不能,我能运行javascript或其他东西来运行一些ruby代码吗?
这是我的html:
=@temp的表单,:url =〉临时路径,:html =〉{:多部分=〉真}执行|形式|

= form.file_field :image

=图像标签@临时图像网址
=图像标签@临时图像网址(:中等)
=图像标签@临时图像网址(:thumb)

wz1wpwve

wz1wpwve1#

如果我没理解错的话,你想在上传之前预览一张图片,对吗?你可以使用一些javascript来实现。
通过设置图像标签的宽度和高度属性,可以模拟缩略图。

$(function() {
  $('#pictureInput').on('change', function(event) {
    var files = event.target.files;
    var image = files[0]
    var reader = new FileReader();
    reader.onload = function(file) {
      var img = new Image();
      console.log(file);
      img.src = file.target.result;
      $('#target').html(img);
    }
    reader.readAsDataURL(image);
    console.log(files);
  });
});

和html:

<form>
  <input type="file" id="pictureInput"> 
</form>
<div id="target">
</div>

您可以在code pen上查看

7jmck4yq

7jmck4yq2#

这在我的例子中是有效的:

$('.file-input').on 'change', (event) ->
    $('.image').attr('src', URL.createObjectURL(this.files[0]))
44u64gxh

44u64gxh3#

不需要jQuery,你可以在现代JS中做同样的事情:

const selectElement = document.querySelector('#pictureInput');

selectElement.addEventListener('change', (event) => {
  let files = event.target.files;
  let image = files[0]
  let reader = new FileReader();
  reader.onload = function(file) {
    let img = new Image();
    console.log(file);
    img.src = file.target.result;
    let target = document.querySelector('#target')
    while (target.firstChild) {
      target.removeChild(target.firstChild);
    }
    document.querySelector('#target').appendChild(img)
  }
  reader.readAsDataURL(image);
  console.log(files);
});

相关问题