Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 图像上传前的多个缩略图_Javascript_Jquery_Image_Thumbnails - Fatal编程技术网

Javascript 图像上传前的多个缩略图

Javascript 图像上传前的多个缩略图,javascript,jquery,image,thumbnails,Javascript,Jquery,Image,Thumbnails,我在Javascript/Jquery方面非常缺乏经验,因此我使用来处理图像上传过程的前端。 问题:我想上传多张图像,而不仅仅是一张,因此还想显示所有图像,这些图像将作为缩略图上传。目前只有一幅图像显示为缩略图。 (仅显示一个缩略图) HTML(相关部分) 这仅适用于支持或API的浏览器 我尝试循环待上载的图像: replaceResults = function (img) { var content; var imageFiles = document

我在Javascript/Jquery方面非常缺乏经验,因此我使用来处理图像上传过程的前端。

问题:
我想上传多张图像,而不仅仅是一张,因此还想显示所有图像,这些图像将作为缩略图上传。目前只有一幅图像显示为缩略图。


(仅显示一个缩略图)


HTML(相关部分)


这仅适用于支持或API的浏览器


我尝试循环待上载的图像:

replaceResults = function (img) {
        var content;
        var imageFiles = document.getElementById("upload-post-images"),
        filesLength = imageFiles.files.length;

        // Loop through the FileList and render image files as thumbnails.
        for (var i = 0; i < filesLength; i++) {
            if (!(img.src || img instanceof HTMLCanvasElement)) {
                content = $('<span>Die Bilddatei konnte nicht geladen werden.</span>');
            } else {
                content = $('<a target="_blank">').append(img)
                    .attr('download', currentFile.name)
                    .attr('href', img.src || img.toDataURL());
            }
            result.children().replaceWith(content);
            if (img.getContext) {
                actionsNode.show();
            }
        } // end for loop
    },
replaceResults=函数(img){
var含量;
var imageFiles=document.getElementById(“上传帖子图像”),
filesLength=imageFiles.files.length;
//循环浏览文件列表并将图像文件渲染为缩略图。
对于(var i=0;i

 </form>
 <img src="blob:https%3A//fiddle.jshell.net/001bd1f5-1cce-4618-bc83-9c8bd24f9e90" width="200" height="150">
 <img src="blob:https%3A//fiddle.jshell.net/001bd1f5-1cce-4618-bc83-9c8bd24f9e90" width="200" height="150">

在我的项目中(使用您的代码),缩略图放置在结果div中:

<div id="result" class="result">
    <a target="_blank" download="image.jpg" href="data:image/png;base64,iVBO3sSxiFIz6LUNoB9b27d/p9/HzNSojY7M+FCmPOnGAsrVBWlKSGsSfG4GBNOzbIWtW38xtqwSLsTpzHF7/N4n7PwQgrIo5fh...></a>
    <canvas width="265" height="354"></canvas>
</div>


你有没有可能知道为什么会这样,或者我怎样才能改变它?!


非常感谢您的大力帮助!

您需要将更改功能更改为:

document.getElementById('upload-post-images').onchange = function (e) {
    for(i = 0; i<=e.target.files.length; i++)
    {
       loadImage(
          e.target.files[i],
          function (img) {
              document.body.appendChild(img);
          },
          {maxWidth: 200} // Options
       );
    }
};
因此,由于这一行:

e.target.files[0]
始终只从图像数组传递一个图像(第一个)

享受!:)

更新


关于你的更新-所以基本上都是关于loadImage函数中的第二个参数。

更改你的
上传帖子图像
更改事件,如下所示

document.getElementById('upload-post-images').onchange = function (e) {
    $.each(e.target.files, function () {
        loadImage(
          this,
          function (img) {
              document.body.appendChild(img);
          }, {
              maxWidth: 200
          } // Options
        )
    });
};

太好了!这并没有解决我的问题,但至少现在我知道这个部分应该可以工作了。谢谢!我更新了我的问题。你有没有可能用这个为我指出正确的方向?非常感谢你的帮助!!@kringeltore关于你在JSFIDLE中的更新,已经定义了一些函数,比如replaceResults,displayImage等。还有变量var result=$('#result'),这是您的result div。在jsfiddle中,这些函数没有使用,但我猜在您的中它们是。例如,这一行:result.children().replaceWith(content);可能会导致图像被追加到div结果中。因此,基本上,这都是关于js FIDLE中loadImage函数的第二个参数:function(img){document.body.appendChild(img);},不,img是单映像,您需要在循环中执行loadImage函数,就像在JSFIDLE中一样,我更新了JSFIDLE。所以基本上loadImage函数只能在一个img中工作,但如果您想在循环中加载多个映像,请运行loadImage函数谢谢!Piotr Czarnecki速度更快,更具弹性。因此,我同意他的回答。我编辑了我的问题。你有机会帮我吗?非常感谢你的帮助!!
e.target.files[0]
document.getElementById('upload-post-images').onchange = function (e) {
    $.each(e.target.files, function () {
        loadImage(
          this,
          function (img) {
              document.body.appendChild(img);
          }, {
              maxWidth: 200
          } // Options
        )
    });
};