LayUI中集成FraUpload插件实现多图片上传,并可拖动图片进行排序
实现效果如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2csATSU9UNrpnTwEleYhnRzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcukTO1UDNyATM1EjNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
使用方法
1.在html中加下如下代码
<div class="layui-form-item">
<label class="layui-form-label">帖子图片:</label>
<!-- <div id="show_images2">-->
<!-- </div>-->
<div class="layui-input-inline layui-btn-container" style="width: auto; margin-top:-10px;">
<button type="button" class="layui-btn layui-btn-primary" id="upload_duixiang">
<i class="layui-icon"></i>上传图片
</button>
</div>
<label style="padding: 5px 15px; display: block;">(推荐尺寸:800 X 800)</label>
<div class="show"> //图片输出位置
</div>
</div>
2. 引用JS和CSS文件
<script type="text/javascript" src="../manager/js/jquery-3.3.1.min.js"></script>
<link rel="stylesheet" type="text/css" href="../manager/css/FraUpload.css">
<script type="text/javascript" src="../manager/js/FraUpload.js"></script>
<script type="text/javascript" src="../manager/js/MD5.js"></script>
<script src="../manager/js/Sortable/Sortable.js"></script>
3.实例化js对象
用法:
// 商品图片上传
a = $("#upload_duixiang").FraUpload({
view : ".show", // 视图输出位置
url : "upload.php", // 上传接口
fetch : "img", // 视图现在只支持img
debug : false, // 是否开启调试模式
/* 外部获得的回调接口 */
onLoad: function(e){ // 选择文件的回调方法
console.log("外部: 初始化完成...");
},
breforePort: function (e) { // 发送前触发
console.log("文件发送之前触发");
},
successPort: function (e) { // 发送成功触发
console.log("文件发送成功");
onload_image()
},
errorPort: function (e) { // 发送失败触发
console.log("文件发送失败");
onload_image()
},
deletePost: function(e){ // 删除文件触发
console.log("删除文件");
console.log(e);
alert('删除了'+e.filename)
onload_image()
},
sort: function(e){ // 排序触发
console.log("排序");
onload_image()
},
});
实际应用:
var commodityUploadObj;
function loadMultiUpload(){
// 帖子图片上传
$('.show').html('');
commodityUploadObj = $("#upload_duixiang").FraUpload({
view : ".show", // 视图输出位置
url : "../../file/uploadMultipart", // 上传接口
fetch : "img", // 视图现在只支持img
debug : false, // 是否开启调试模式
//def: ['https://cdn.ebiaoji.com/weima/20200731/1596186936839.jpg', 'https://cdn.ebiaoji.com/weima/20200731/1596186940920.jpg', 'https://cdn.ebiaoji.com/weima/20200731/1596186944995.jpg'],
def: show_images2,
successPort: function (e) { // 发送成功触发
console.log("文件发送成功");
}, deletePost: function(e){ // 删除文件触发
},
});
}
4. 更新表单数据
用法:
// 获取图片上传信息
function onload_image(){
var res = a.FraUpload.show()
var ids = [];
for(let k in res){
this_val = res[k]
if(!empty(res[k]['is_upload']) && !empty(res[k]['ajax'])){ //empty方法详见5.中
ajax_value = res[k]['ajax'];
ids.push(ajax_value.data.id)
}
}
$("#imagepath").val(ids);
$('#geoJsonTxt').html(JsonFormat(res));
}
实际应用:
// 获取图片上传信息
function onload_image(){
console.log($(commodityUploadObj).html());
var res = $(commodityUploadObj)[0].files_all;
var ids = [];
for(let k in res){
this_val = res[k]
if(!empty(res[k]['is_upload']) && !empty(res[k]['ajax'])){ //empty方法详见5.中
ajax_value = res[k]['ajax'];
ids.push(ajax_value.data.filepath)
}
}
show_images2 = ids; //这里的show_images2 对应于实例化js对象中def: show_images2中的show_images2
}
5.上述JS需要的方法
/**
* 判断变量是否为空
*/
function empty(value) {
if(value=="" || value==undefined || value==null || value==false || value==[] || value=={}){
return true;
}else{
return false;
}
}
6.函数调用
在需要使用多图片上传的地方调用
loadMultiUpload();
,在需要获取上传图片信息的地方调用
onload_image();
我这里是在打开新增帖子成功后就调用 ,如图:
具体的根据自己的情况而定
FraUpload上传图片所引用的文件自行下载:
https://download.csdn.net/download/qq_44799924/19663031