php - 上传随机文件时出现错误
问题描述
我的页面上有多种文件类型。我的问题是,如果我首先开始上传文件或图像,那么它就可以工作。
如果我随机上传文件,那么我会收到错误消息。
这是完整的代码。
HTML
<div class="container">
<form action="process.php" method="post" name="multiplefiles" enctype="multipart/form-data" id="myprofile">
<div class="input_fields_wrap">
<?php
$labelname = array('Label 1','Label 2','Label 3','Label 4','Label 5','Label 6','Label 7');
$labelCount=count($labelname);
?>
<div class="row mt-3">
<?php
for ($i=0; $i < $labelCount; $i++) {
?>
<div class="col-lg-4 mb-4 ">
<div class="documentUploadWrap">
<label><?php echo $labelname[$i];?></label>
<div class="upload_doc">
<input type="hidden" name="docUploadLabel[]" value="<?php echo $labelname[$i];?>">
<input type="file" name="docUpload[]" class="fileupload">
<input type="hidden" name="docUpload[]" value="">
<div class="uploadInfo">
<div class="upload_icon"></div>
<p>Drop your image here, or <span>browse</span></p>
<span>Supports: JPEG, PNG, PPT, PPTX, PDF <br />Max Size: 5MB</span>
</div>
</div>
</div>
</div>
<?php } ?>
</div>
<input type="submit" name="send" value="Submit" class="btn btn-primary">
</div>
</form>
</div>
过程
if (isset($_POST['send'])) {
$total = count(array_filter($_FILES['docUpload']['name']));
for($i=0; $i < $total; $i++) {
if(isset($_FILES['docUpload']['name'][$i]) && $_FILES['docUpload']['name'][$i] != "")
{
$foldername="uploads";
$uploadLabel=$_POST['docUploadLabel'][$i];
$image1 = $_FILES['docUpload']['name'][$i];
$filename = basename($image1);
$onlyfile = pathinfo($filename, PATHINFO_FILENAME);
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$file = mt_rand();// random number
$newname = $onlyfile.'_'.$file.'.'.$extension;
echo $location='images/'.$foldername.'/'.$newname;
if($extension=='png' || $extension=='jpg' || $extension=='jpeg') {
compressImage($_FILES['docUpload']['tmp_name'][$i],$location,60);
}
else{
move_uploaded_file($_FILES['docUpload']['tmp_name'][$i], $location);
}
$uploadDoc=$newname;
}
else{
if (isset($_POST['docUpload'][$i]) && $_POST['docUpload'][$i]!= "") {
$uploadLabel=$_POST['docUploadLabel'][$i];
$uploadDoc=$_POST['docUpload'][$i];
}
}
$dataupload=array(
'upload_label'=>$uploadLabel,
'upload_name'=>$uploadDoc,
);
echo "<pre>";
print_r($dataupload);
}
}
echo"<pre>"; var_dump($_FILES);
输出。我在标签 4 和标签 6 中上传了图片
解决方案
发生这种情况是因为如果条件相同,则加倍,使 $uploadname 和 $uploadlable 变为未定义
<?php
$filedemo=array('docUpload'=>array(
array('label'=>'Label1','file'=>null),
array('label'=>'Label2','file'=>'file2'),
array('label'=>'Label3','file'=>null),
array('label'=>'Label4','file'=>'file4'),
array('label'=>'Label5','file'=>null),
array('label'=>'Label6','file'=>null),
array('label'=>'Label7','file'=>null),
)
);
$total = count($filedemo['docUpload']);
for($i=0; $i < $total; $i++) {
if(isset($filedemo['docUpload'][$i]['file']) && !empty($filedemo['docUpload'][$i]['file']))
{
$uploadLabel=$filedemo['docUpload'][$i]['label'];
$uploadDoc=$filedemo['docUpload'][$i]['file'];
}
else{
$uploadLabel=$filedemo['docUpload'][$i]['label'];
$uploadDoc=$filedemo['docUpload'][$i]['file'];
}
$dataupload=array(
'upload_label'=>$uploadLabel,
'upload_name'=>$uploadDoc,
);
echo "<pre>";
print_r($dataupload);
}
推荐阅读
- ios - 如何在 Alamofire 正文 + 参数中创建请求
- laravel - 安装 Laravolt Avatar 包时出现错误
- c - 为什么免费功能在我的代码中不起作用?
- tensorflow2.0 - 如何在 tensorflow 2.0 中训练 tensorflow 概率双射器(权重)?
- node.js - 如何修复 travis-ci 中的以下构建错误:FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
- r - tsv 文件的多次导入仅适用于第一个文件
- smtp - 无法让 Haraka 使用 LetsEncrypt 证书
- google-apps-script - 基于单元格值自动生成的电子邮件
- swift - 当 JSON 的名称中包含带有“-”的字符串时,如何使用 Decodable 解析 JSON
- java - Java 错误打开注册表项“软件\JavaSoft\Java 运行时环境”