WebUploader多图片上传
官网:http://fex.baidu.com/webuploader/
此插件适用于没有使用前端框架的程序。如使用vue,可直接使用Element中的上传组件
实现步骤
-
官网下载代码(下面会提供自己用到的文件下载路径)
-
页面引入 webuploder 资源
-
-
触发上传事件,后台接收图片并返回存储路径
-
触发保存事件,后台将图片路径及对应数据入库
实现后的页面效果
选择多图上传

上传后效果图

前台代码
-
引入资源
下载地址:https://files-cdn.cnblogs.com/files/blogs/716958/WebUploader.zip
<!--引入CSS ,webuploder只有几个基础样式,在该css内添加一些自己的样式-->
<link rel="stylesheet" type="text/css" href="webuploader文件夹/webuploader.css">
<!--引入JS-->
<script type="text/javascript" src="webuploader文件夹/webuploader.js"></script>
<!--imgUploader.js 所有js功能事件均在该文件内实现(自己封装的)-->
<script type="text/javascript" src="webuploader文件夹/webuploader.js"></script>
<!--SWF在初始化的时候指定,在后面将展示-->
-
绘制图片框、选择按钮和保存按钮
<div>
<div id="fileList" class="uploader-list"> </div>
<!-- 这里div内添加 是故意而为之,后面会说原因-->
<div id="filePicker">选择图片</div>
</div> -
前端JS
/** 多图片上传 start */
// 多图片数组,每次上传或删除都会改变该数组,用于最后保存入库的数据
var imgFileArray = new Array();
function imgFilePath(id,filePath,fileName) { // 用来存储每一次上传的图片路径
this.id = id;
this.filePath = filePath;
this.fileName = fileName;
}
// 初始化WebUploader实例
var uploader = WebUploader.create({
// 选完文件后,是否自动上传(这里选择自动上传)
auto: true,
// swf文件路径(对应修改为自己的地址)
swf: webUrl + '/resource/webuploader/Uploader.swf',
// 文件接收服务端(对应修改为自己的地址)
server: webUrl + '/datainfo/moon/uploadImg.action',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#filePicker',
// 只允许选择图片文件。
accept: {
title: 'Images',
extensions: 'gif,jpg,jpeg,bmp,png',
mimeTypes: 'image/*'
}
});
// 当有文件添加进来的时候(可根据自己需要进行修改)
uploader.on( 'fileQueued', function( file ) {
let $li = $(
'<div id="' + file.id + '" class="thumbnail">' +
'<div><span class="info">' + file.name + '</span><span class="delImg" onclick="delImgFile(this)">X</span></div>' +
'<img>' +
'</div>'
),
$img = $li.find('img');
makeFileListNbsp();
$("#fileList").append( $li );
// 创建缩略图
// 如果为非图片文件,可以不用调用此方法。
// thumbnailWidth x thumbnailHeight 为 100 x 100
let thumbnailWidth = 315; // 可根据自己需要修改参数值
let thumbnailHeight = 150;
uploader.makeThumb( file, function( error, src ) {
if ( error ) {
$img.replaceWith('<span>不能预览</span>');
return;
}
$img.attr( 'src', src );
}, thumbnailWidth, thumbnailHeight );
});
// 文件上传成功,给item添加成功class, 用样式标记上传成功。
uploader.on( 'uploadSuccess', function( file,response ) { // response为后台返回值
$( '#'+file.id ).addClass('upload-state-done');
// 将每次上传的图片路径存到数组中
imgFileArray.push(new imgFilePath(response.id,response.filePath,response.fileName));
});
// 当所有文件上传结束时触发。
uploader.on( 'uploadFinished', function( file ) {
//console.log('----所有文件上传结束---')
});
// 文件上传失败,显示上传出错。
uploader.on( 'uploadError', function( file ) {
//console.log('----上传失败---')
});
// 删除图片(可根据自己需要进行修改)
function delImgFile(del) {
let $_imgFile = $(del).
