gpt4 book ai didi

php - PHP 中的多个文件上传验证不起作用

转载 作者:行者123 更新时间:2023-11-30 21:57:38 24 4
gpt4 key购买 nike

我正在尝试验证我所有上传的文件,实际上我会验证文件大小和文件类型。如果任何文件的验证失败,我会记录该特定文件以获取错误消息。我正在使用每个循环进行文件处理,并使用 if 条件进行文件大小和文件类型验证,但问题仅在于第一个条件是否被评估,第二个问题是否被阻止未经测试。两者都位于每个循环的内部。任何帮助将不胜感激...

代码

 public function validate_my_files(){

foreach($this->files_from_user_validateit['name'] as $key => $value){
$name = $this->files_from_user_validateit['name'][$key];
$size = $this->files_from_user_validateit['size'][$key];
$type = $this->files_from_user_validateit['type'][$key];
//$error[$key] = $this->files_from_user_validateit['error'][$key];
//$tmp_name[$key] = $this->files_from_user_validateit['tmp_name'][$key];

//not allowed file extensions
$not_allowed_ext = array('php','js','asp','aspx','py','c','c++','jsp','perl','cfg','css','java',
'json');
//lets find the extension of the filename
$est = explode('.',$name);
$ext = $est[count($est)-1];
if(in_array($ext,$not_allowed_ext)){
//putting in session for later message
$_SESSION['ext'][] = $name;
}

//lets check for file size now, lets not allow file greater than 50MB
if($size > 47185920){
$_SESSION['size'][] = $name;
}
}
print_r($_SESSION);die();
}

只有文件扩展名被测试,而如果大小条件不工作...

编辑

不幸的是,我的上传表单存在巨大问题。稍后选择的文件仅由 $_FILES 处理,我正在使用多个文件上传并使用 java 脚本在同一页面的表格上显示选定的文件。假设我首先选择 5 个文件(表格上显示的那 5 个文件),然后再次选择 3 个文件,现在表格上总共有 8 个文件。但是我第二次选择的最后 3 个文件在 $_FILES 数组中可用。请任何人对此有解决方案...

重新编辑

Id 'myfiles' 用于保存来自输入文件字段的多个文件。id 'dataS' 是由下面给定的 JS 创建的表的 div。IF 'tot' 是表中文件总大小的跨度。输入表格:

   <form id="uploadform" method="post" action="" enctype="multipart/form-data">
<div id="datas"></div>

<div id="tot"><h3>TOTAL SIZE:</h3> <span id="zise">0 MB</span></div>

<div id="addfiles"><input type="file" name="addfiles[]" value="Add Files" multiple="multiple" id="myfiles" ></div>

<input type="submit" name="sbmtfile" style="color:green;font-size: 17px;">

</form>

我的JS:

<script type="text/javascript">
var s = 1;
var totsize = 0;

myfiles.onchange = function(){
var a = document.getElementById('myfiles').files;
var b = document.getElementById('datas');
var total = document.getElementById('tot');//for table title

var c = document.createElement('TABLE');
c.className = 'showtable';
c.border = '1px';
c.cellspacing = '0';
c.cellpadding = '2';
c.width = '100%'

for(var i = 0; i < a.length; i++){
var f = document.createElement('TR');
c.appendChild(f);
//for total file size
totsize = totsize + a[i].size;

var r = document.createElement('TD');
r.align = 'center';
r.width = '152px';
f.appendChild(r);
r.appendChild(document.createTextNode(s++));

var y = document.createElement('TD');
y.align = 'left';
y.width = '610px';
y.appendChild(document.createTextNode(a[i].name));
f.appendChild(y);

var z = document.createElement('TD');
z.align = 'center';
r.width = '152px';
z.appendChild(document.createTextNode(Math.round((a[i].size)/1024)));
f.appendChild(z);

var x = document.createElement('TD');
x.align = 'center';
x.width = '152px';
x.appendChild(document.createTextNode('DELETE'));
f.appendChild(x);
}

b.appendChild(c);
document.getElementById('zise').innerHTML = Math.round((totsize/(1024*1024)))+ ' MB';
}

</script>

最佳答案

您是否在寻找 else 语言元素?

if (in_array($ext,$not_allowed_ext)) {
//putting in session for later message
$_SESSION['ext'][] = $name;
} else {
####
//lets check for file size now, lets not allow file greater than 50MB
if ($size > 47185920) {
$_SESSION['size'][] = $name;
}
}

仅在不违反扩展名的情况下才检查大小。

(我做的不是一个漂亮的例子,还有 else if,但如果你不知道 else,我认为先看看 else 更重要)

关于php - PHP 中的多个文件上传验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44560950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com