在公司遇到了这个问题,之前都是用jq自己封装一个多图上传的东西,但是那样太麻烦了,并且样式也不好搞,在这整合了一下tp+layui的多图上传。
不多说了,上代码
首先呢,我们在layui的官方文档上,拿走他们的前端代码
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
<legend>上传多张图片</legend>
</fieldset>
<div class="layui-upload">
<button type="button" class="layui-btn" id="test2">多图片上传</button>
<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
预览图:
<div class="layui-upload-list" id="demo2"></div>
</blockquote>
</div>
没错就那么多,不要急!这是html代码,在这提醒(千万不要忘了layui的css和js)一定要导入,否则没有任何效果!!
接下来再看layui的js代码
var test2 = new Array();//这个数组就是多张图片接口返回的路径
layui.use('upload', function () {
var $ = layui.jquery
, upload = layui.upload;
//多图片上传test2
upload.render({
elem: '#test2'
, url: '/index.php/admin/Article/imgall' //改成您自己的上传接口
, multiple: true
, before: function (obj) {
obj.preview(function (index, file, result) {
$('#demo2').append('<img src="' + result + '" alt="' + file.name + '" class="layui-upload-img">') // 这里是预览图
});
}
, done: function (res) {
//上传完毕
test2.push(res); //将接口返回的路径一个一个的push到test2数组
console.log(test2, 'test2');
}
});
});
前端咱们基本上搞定了(是不是特别简单),不需要咱们仔细研究,因为这都是他们官方封装好的,咱们直接拿来用就行啦!!!!(这里提醒,多看文档是相当有好处的)。
这里到了tp部分,也是很多人苦恼的部分,都说后端比前端难,哈哈哈哈哈!come,上代码!!
public function imgall()
{
$path = C('IMG_FOLDER'); // 这里是我自己定义的路径常量
$upload = new \Think\Upload(); // 实例化上传文件类
$upload->maxSize = 0;
$upload->rootPath = '.' . $path;
$upload->savePath = '';
$upload->saveName = array('uniqid', '');
$upload->exts = array('jpg', 'gif', 'png', 'jpeg', 'mp4');
$upload->autoSub = true;
$upload->subName = array('date', 'Ymd');
$info=$upload->upload();
if(!$info){
$array['code']=0;
$array['message']=$upload->getError(); // 返回错误信息
$this->ajaxReturn ($array,'JSON');
exit();
}else {
foreach ($info as $value) {
$arr[] = '/Upload' . '/' . $value['savepath'] . $value['savename'];
}
}
$this->ajaxReturn($arr); // 返回tp处理过的路径
}
看完这篇文章,是不是已经解决了你们的困惑,其实仔细研究,还是觉得不是特别的难的!还有什么特别方便的方法,希望大佬们前来打扰。