Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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
Php html-输入类型=“文件”多个_Php_Html - Fatal编程技术网

Php html-输入类型=“文件”多个

Php html-输入类型=“文件”多个,php,html,Php,Html,我想问一个关于你的问题。例如,一个用户一次选择3个图像,如果他希望在上传前再选择2个图像与最后3个图像一起添加,但当用户在上传前选择最后2个图像时,前3个图像将从文件列表中删除,并且当用户上传图像时,仅上传最后2个图像,为什么会发生这种情况。请帮帮我。如何解决这个问题 这是html文件输入标记的默认行为。每次选择时,它都会替换以前选择的文件。您可以使用formdata将文件存储到html中,并在browse的.onchange事件中将文件存储到formdata中 现在我已经找到了解决办法 &l

我想问一个关于你的问题。例如,一个用户一次选择3个图像,如果他希望在上传前再选择2个图像与最后3个图像一起添加,但当用户在上传前选择最后2个图像时,前3个图像将从文件列表中删除,并且当用户上传图像时,仅上传最后2个图像,为什么会发生这种情况。请帮帮我。如何解决这个问题

这是html文件输入标记的默认行为。每次选择时,它都会替换以前选择的文件。您可以使用formdata将文件存储到html中,并在browse的.onchange事件中将文件存储到formdata中

现在我已经找到了解决办法

 <input type="file" id="attachfile" name="replyFiles" multiple> <!--File Element for multiple intput-->
 <div id="#filelist"></div>
 <script>
    var selDiv = "";
    var storedFiles = []; //store the object of the all files

    document.addEventListener("DOMContentLoaded", init, false); 

    function init() {
       //To add the change listener on over file element
       document.querySelector('#attachfile').addEventListener('change', handleFileSelect, false);
       //allocate division where you want to print file name
       selDiv = document.querySelector("#filelist");
    }

    //function to handle the file select listenere
    function handleFileSelect(e) {
       //to check that even single file is selected or not
       if(!e.target.files) return;      

       //for clear the value of the selDiv
       selDiv.innerHTML = "";

       //get the array of file object in files variable
       var files = e.target.files;
       var filesArr = Array.prototype.slice.call(files);

       //print if any file is selected previosly 
       for(var i=0;i<storedFiles.length;i++)
       {
           selDiv.innerHTML += "<div class='filename'> <span> " + storedFiles[i].name + "</span></div>";
       }
       filesArr.forEach(function(f) {
           //add new selected files into the array list
           storedFiles.push(f);
           //print new selected files into the given division
           selDiv.innerHTML += "<div class='filename'> <span> " + f.name + "</span></div>";
       });

       //store the array of file in our element this is send to other page by form submit
       $("input[name=replyfiles]").val(storedFiles);
 }
 </script>

这是浏览器集的行为,您对此无能为力。如果你有一个动态的上传数量,也许你应该为一个图像创建一个动态的输入字段数量。可能是你的代码中的某些内容。你可以使用HTML5上传程序,并将已经选择的图像隐藏起来,例如。你可以通过ajax立即上传所选文件。@bansi你是在问我的代码吗?你的意思是说ajax不是这个问题的解决方案?你能为我提供这个formdata解决方案的任何链接吗?我在.onChange事件上使用了ajax,但它不起作用,默认行为仍然存在。