ajax+tp单文件上传没有问题,上传多文件本来网上找个现成的,结果乱七八糟的,全都不能用,所以自己写一个吧,免得后来人踩坑
html
<form class="upload-file">
<input class="upload_files" type="file" multiple="multiple">
<button class="upload_btn" type="button" value="1">上传</button>
</form>
ajax
$(".upload_btn").click(function(){
var formData = new FormData();
var id = $(this).val();
var files = $(".upload_files")[0].files;
if(files.length == 0){
fail('上传的图片不能为空');
return false
}
//这一步很关键,直接传输files的话tp后台是不认的
for(let i in files){
formData.append("file"+i, files[i]);
}
$.ajax({
url: "后台连接?id="+id, //id是我定文件夹用的,按自己需求来
method: 'POST',
data: formData,
contentType: false,
processData: false,
cache: false,
success: function(data) {
alert('修改成功');
},
error: function (error) {
console.log(error);
alert('添加失败,请稍后再试');
}
});
});
tp5.1
use think\facade\Request;
use think\File;
use think\facade\Env;
$id = $this->request->param('id');
$files = Request::file();
$path = Env::get('root_path').'public\\assets\\'.$id;
foreach($files as $k => $file){
$fileInfo = $file->getInfo();
$file->move($path,$fileInfo['name']);
}