【问题标题】:Multiple Image preview with multiple input file具有多个输入文件的多个图像预览
【发布时间】:2015-07-16 11:33:23
【问题描述】:

如何预览从不同输入上传的多张图片? textarea 的内容在按下按钮时写入 div seeimg 内,textarea 包含 <img src="$img" id="img1"> ,id 是从 1 到 15 (img1,img2,img3...img15) 我想要图像由用户上传,以便在 div seeimg

中看到


HTML

<form method="post" enctype="multipart/form-data" id="mainform">
Imagine 1:<br>
 <input type="file" name="img1" id="img1"><br>
     <br><br>     
Imagine 2 :<br>
 <input type="file" name="img2" id="img2"><br>
     <br>
 Imagine 3 :<br>
 <input type="file" name="img3" id="img3"><br>
     <br>
 Imagine 4 :<br>
 <input type="file" name="img4" id="img4"><br>
     <br>
 Imagine 5 :<br>
 <input type="file" name="img5" id="img5"><br>
     <br>
 Imagine 6 :<br>
 <input type="file" name="img6" id="img6"><br>
     <br>
 Imagine 7 :<br>
 <input type="file" name="img7" id="img7"><br>
     <br>
 Imagine 8 :<br>
 <input type="file" name="img8" id="img8"><br>
     <br>
 Imagine 9 :<br>
 <input type="file" name="img9" id="img9"><br>
     <br>
 Imagine 10 :<br>
 <input type="file" name="img10" id="img10"><br>
     <br>
 Imagine 11 :<br>
 <input type="file" name="img11" id="img11"><br>
     <br>
 Imagine 12 :<br>
 <input type="file" name="img12" id="img12"><br>
     <br>
 Imagine 13 :<br>
 <input type="file" name="img13" id="img13"><br>
     <br>
 Imagine 14 :<br>
 <input type="file" name="img14" id="img14"><br>
     <br>
 Imagine 15 :<br>
 <textarea id="insert" name="content"></textarea>
 <input type="file" name="img15" id="img15"><br>
 </form>
 <div id="seeimg">
 </div>

到目前为止,它只显示上传到第一个输入文件 &lt;input type="file" name="img1" id="img1"&gt; 的图像的脚本,如果我不断更改第一个输入的图像,它会更改下一个而不是第一个。
jQuery

   function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            console.log(e.target.result+" , "+i);
            $('#seeimg #img'+i).attr('src', e.target.result);
        }

        reader.readAsDataURL(input.files[0]);
    }
}


$("form#mainform #img"+i).change(function(){
    readURL(this);
    i++;
});

TL;DR 只为第一个文件输入工作的脚本,如果我上传另一张图片,它会不断更改其他 img src。

小提琴: https://jsfiddle.net/eLss3ojx/6/

【问题讨论】:

  • 只是想知道上面的代码是如何工作的:(
  • @sanjeev 试试小提琴
  • 刚刚添加了一个答案,希望它能告诉你想要实现的路径

标签: javascript jquery html css


【解决方案1】:

我努力理解代码,但我可以知道您有多个文件,并且您希望在文件上传时向用户显示预览。

该方法是正确的,但存在一些基本错误,您使用相同的 ID 用于 img 和输入类型 file ,这会成功,而且我可能会遇到更多错误。为了帮助您解决问题,我修改了您的代码,它将显示不同图像的预览。

HTML

    <form method="post" enctype="multipart/form-data" id="mainform">
    Imagine 1:<br>
     <input type="file" name="img1" id="img1"><br>
     <img id="preview-img1" />
         <br><br>     
    Imagine 2 :<br>
     <input type="file" name="img2" id="img2"><br>
     <img id="preview-img2" />
         <br>
     Imagine 3 :<br>
     <input type="file" name="img3" id="img3"><br>
     <img id="preview-img3" /> 
         <br>
     Imagine 4 :<br>
     <input type="file" name="img4" id="img4"><br>
     <img id="preview-img4" />     
         <br>
     Imagine 5 :<br>
     <input type="file" name="img5" id="img5"><br>
     <img id="preview-img5" />     
         <br>
     Imagine 6 :<br>
     <input type="file" name="img6" id="img6"><br>
     <img id="preview-img6" />     
         <br>
     Imagine 7 :<br>
     <input type="file" name="img7" id="img7"><br>
     <img id="preview-img7" />     
         <br>
     Imagine 8 :<br>
     <input type="file" name="img8" id="img8"><br>
     <img id="preview-img8" />     
         <br>
     Imagine 9 :<br>
     <input type="file" name="img9" id="img9"><br>
     <img id="preview-img9" />     
         <br>
     Imagine 10 :<br>
     <input type="file" name="img10" id="img10"><br>
     <img id="preview-img10" />     
         <br>
     Imagine 11 :<br>
     <input type="file" name="img11" id="img11"><br>
     <img id="preview-img11" />     
         <br>
     Imagine 12 :<br>
     <input type="file" name="img12" id="img12"><br>
     <img id="preview-img12" />     
         <br>
     Imagine 13 :<br>
     <input type="file" name="img13" id="img13"><br>
     <img id="preview-img13" />     
         <br>
     Imagine 14 :<br>
     <input type="file" name="img14" id="img14"><br>
     <img id="preview-img14" />     
         <br>
     Imagine 15 :<br>
     <textarea id="insert" name="content"></textarea>
     <input type="file" name="img15" id="img15"><br>
      <img id="preview-img15" />    
     </form>

Javascript

      function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();

            reader.onload = function (e) {
                imgId = '#preview-'+$(input).attr('id');
                $(imgId).attr('src', e.target.result);
            }

            reader.readAsDataURL(input.files[0]);
        }
      }


      $("form#mainform input[type='file']").change(function(){
        readURL(this);
      });

【讨论】:

  • 我猜你在图片和文件类型上使用了相同的 id,不管怎样,干杯:)
【解决方案2】:

在您的 JSfiddle 中,您将 src 设置为不是图像,而是 div。 您必须创建一个图像元素并将其附加到您的 div 中,如下所示:

$('<img>').attr('id', '#pre_img' + i).attr('src', e.target.result).appendTo('#vezi');

而不是

$(principdiv+'#img'+i).attr('src', e.target.result);

此外,您的代码错误地绑定了change 处理程序。你应该这样做:

$("#mainform input[id^='img']").change(function() {
  readURL(this);
}); 

JSFiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多