1. 创建一个表单,添加两个附件框
<form id="newtopic" >
<input type="file" name="att1" >
<br />
<input type="file" name="att2" >
<br />
<button id="submitBtn" >Submit 提交</button>
</form>
2. 为按钮创建AJAX单击事件,执行后表单中的附件会上传到服务器的全局变量$_FILES中
$(‘#submitBtn‘).click(function(){
//获取表单数据
var formdata=new FormData($("#newtopic")[0]);
$.ajax({
//请求方式
type:‘POST‘,
url:"{:url(‘topic/issuerUploadFile‘)}",
data:formdata,
//接收服务器返回的数据类型
dataType:"text",
//禁止ajax设置编码方式
processData: false,
//禁止ajax将数据类型转换为字符串
contentType: false,
success:function(response,status,xhr){
alert(response);
},
error:function(xhr,errorStatus,errorType){
alert(xhr.status+": "+ errorType);
}
});
3. 在控制器Topic.php文件中添加方法
public function issuerUploadFile()
{
//print_r($_FILES);
$info="no_file_uploaded";
$myDir=‘topic_issuer‘. DS . ‘TPC2020-000003‘;
$filePath=ROOT_PATH . ‘public‘ . DS . ‘uploads‘;
$filePath = $filePath . DS . $myDir ;
//检查路径是否存在,如果不存在则创建文件夹
if(!is_dir($filePath))
{
//创建文件夹
$res=mkdir(iconv("UTF-8", "GBK", $filePath));
if (!$res)
{
$info = "目录创建失败 Create directory failed";
goto exit_line;
}
}
$i =0; //用于记录上传的附件数
//通过foreach循环查看上传的附件信息
foreach ($_FILES as $fileInfo)
{
//无错误时上传文件
// if ($fileInfo["error"]>0)
// // {
// // $info="error:" . $fileInfo["error"];
// // }
// // else
if ($fileInfo["error"]==0)
{
$fileName=$fileInfo["name"];
$filePathName=$filePath . DS . $fileName;
move_uploaded_file($fileInfo["tmp_name"], $filePath . DS . $fileInfo["name"]);
$i++;
$info +=$i . " uploaded:" . $fileName . "<br />";
}
}
exit_line:
return $info;
}
JQuery AJAX + PHP 上传多个附件到服务器
原文:https://www.cnblogs.com/3xin/p/12400520.html