Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 HTML5输入类型文件,如何增加可以上传的文件数量?_Javascript_Html_Reactjs_Input - Fatal编程技术网

Javascript HTML5输入类型文件,如何增加可以上传的文件数量?

Javascript HTML5输入类型文件,如何增加可以上传的文件数量?,javascript,html,reactjs,input,Javascript,Html,Reactjs,Input,我正在制作一个表单,用户可以上传文件。唯一的问题是我希望用户能够上传多于1个文件,但少于6个,我如何指定这一点?我知道我可以使用multiple属性,但这允许使用6个以上的属性,这可能会在将来给我带来问题 这就是我到目前为止所做的: <input type="file" accept=".jpeg, .png, .jpg" multiple id="input-listing-img" /> 是否有方法指定允许x文件量

我正在制作一个表单,用户可以上传文件。唯一的问题是我希望用户能够上传多于1个文件,但少于6个,我如何指定这一点?我知道我可以使用multiple属性,但这允许使用6个以上的属性,这可能会在将来给我带来问题

这就是我到目前为止所做的:

<input type="file" accept=".jpeg, .png, .jpg" multiple id="input-listing-img" />


是否有方法指定允许x文件量?

使用jquery将上载文件限制在6个以下

$("#image").on("change", function() {
    if ($("#image")[0].files.length > 6) {
        alert("You can select only 6 images");
    } else {
        $("#imageUploadForm").submit();
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="image[]" id="image" type="file"  multiple="multiple" accept="image/jpg, image/jpeg, , image/png" >
$(“#图像”)。关于(“更改”,函数(){
if($(“#image”)[0].files.length>6){
警报(“您只能选择6幅图像”);
}否则{
$(“#imageUploadForm”).submit();
}
});

这可能会在客户端限制它,但您应该始终在服务器端再次检查。

注意:我只是以查看上传的文件为例。您可以将其更改为处理文件的PHP脚本

let container=document.querySelector('div#uploads container');
let files_span=document.querySelector('div#uploads container span#files');
让文件=[];
常数最大值=6;
函数getFileInputs()
{
return container.querySelectorAll('input[type=file].input listing img');
}
函数updateFiles()
{
files_span.innerHTML='上载的文件:';
如果(files.length>0)
{
for(设i=0;i
div#上传容器
{
边框:实心3px绿色;
背景:浅绿色;
填充:10px;
边缘底部:10px;
}
div#上传容器>输入[type=file]。输入列表img
{
显示:块;
}



您设置的任何
客户端
都可能被滥用/更改,因此您只能指定此限制
服务器端
我不这么认为。您可以使用文件系统访问API(),但即使这样,也只允许多个
,尽管我相信您可以更好地定制对话框。可能方法就是告诉用户,他们一开始只能上传<6个文件,然后如果他们上传更多的文件,则显示某种模式。使用@ProfessorAbronsius之类的工具如何检测有多少文件通过客户端发送到服务器?发送的字符串和数据是否会指定某种排序?这取决于用于发送文件的方法的性质。使用此处建议的传统表单方法,服务器将可以访问具有固有长度属性的
$\u文件
数组