[TOC]
示例一:
【1】页面js:
/*
上传附件
docObj:文件对象
appid:cid
apptypeid:1、blog 2、
busitype:100——代表附件
*/
function uploadAttachment(docObj){
var appid = $("#appid").val();
var files =docObj.files;
var formData = new FormData();//通过对象传输到后台
formData.append("appid",appid);//用于sysfile插入数据的appid
for (var i = files.length - 1; i >= 0; i--) {
formData.append("files[]",files[i]);
}
$.ajax({
data : formData,
type : "POST",
url : "/common/xxx/upload",
cache : false,
processData: false, // jQuery不要去处理发送的数据
contentType: false, // jQuery不要去设置Content-Type请求头
dataType: 'JSON',
success: function(data) {//data是返回的hash,key之类的值,key是定义的文件名
//查询
$('#attachment').bootstrapTable('refresh');
attachment(appid);
},
error:function(){
toastr.error("上传失败");
}
});
}
【2】spring mvc后台接收多文件:
//下面新增自定义方法
@ResponseBody
@PostMapping("/upload")
R upload(@RequestParam("files[]") MultipartFile[] files,@RequestParam("appid") String appid) throws IOException, Exception {
//多个附件上传
for (int i = 0; i < files.length; i++) {
System.out.println(i);
String fname = files[i].getOriginalFilename();
// String fileName = FileUtil.renameToUUID(fname);//换成uuid——也是唯一,好找图片
String uuid = UUID.randomUUID().toString().replace("-", "");
String fileType = fname.substring(fname.lastIndexOf(".") + 1, fname.length()).toLowerCase();
String fileName = uuid+"."+fileType;//cf6ec8ccb62e451e8d5f27dab6bfeb3f.png
FileUtil.uploadFile(files[i].getBytes(),tuodataConfig.getUploadPublicPath()+"blog/", fileName);
FileDO fileDo= insertFile(appid,uuid,0,fname,fileName,fileType);
}
return R.ok();
}
示例二:
layui图片上传
【1】单张
html:
<body>
<input type="hidden" name="rotationChartId" id="rotationChartId" value="#(rotationChart.id)" />
<input type="hidden" name="mToken" value="#(mToken)" />
<div class="layui-form-item">
<label class="layui-form-label">轮播图片</label>
<div class="layui-input-block">
<input type="hidden" name="image" id="image" />
<button type="button" class="layui-btn layui-btn-normal" id="chooseFile">选择文件</button>
<div class="fileinput-new thumbnail" style="max-width: 200px; max-height: 150px;">
<img #if(rotationChart.value==null) src="#(ctx)/assets/img/no.png" #else src="#(ctx)#(rotationChart.value)" #end id="demo1" />
</div>
</div>
</div>
</body>
js:
新增的js脚本:
<script>
layui.config({
base: '#(ctx)/assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate', 'upload'], function() {
var $ = layui.$,
admin = layui.admin,
element = layui.element,
layer = layui.layer,
laydate = layui.laydate,
form = layui.form,
upload = layui.upload;
// layui图片上传(单张)
upload.render({
elem: '#chooseFile',
url: '#(curl)/rotationChartSave',
auto: false,
bindAction: '#submit', // 触发事件
headers: {
sessionId: '#(ac.sessionId)',
menuId: '#(menuId)'
},
choose: function(obj) { //选择文件的回调,obj为选中的文件
//将每次选择的文件追加到文件队列
var files = obj.pushFile();
//预览选中的文件(本地文件)
obj.preview(function(index, file, result) {
$('#demo1').attr('src', result);
});
},
done: function(data) {
if(data.code == 1) {
window.location.reload();
} else if(data.code == 2) {
location.href = '#(ctx)/system/toLogin';
}
parent.layer.msg(data.desc, {
offset: '80%'
});
layer.closeAll('loading');
}
});
});
</script>
编辑的js脚本:
<script>
layui.config({
base: '#(ctx)/assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate', 'upload'], function() {
var $ = layui.$,
admin = layui.admin,
element = layui.element,
layer = layui.layer,
laydate = layui.laydate,
form = layui.form,
upload = layui.upload;
// 通过formData进行传递数据
var formData = new FormData($("#form")[0]);
// layui图片上传(单张)
upload.render({
elem: '#chooseFile',
url: '#(curl)/rotationChartUpdate',
auto: false,
bindAction: '#submit',
data: {"rotationChartId":formData.get("rotationChartId")},// 通过属性进行获取值
headers: {
sessionId: '#(ac.sessionId)',
menuId: '#(menuId)'
},
choose: function(obj) { //选择文件的回调,obj为选中的文件
//将每次选择的文件追加到文件队列
var files = obj.pushFile();
//预览选中的文件(本地文件)
obj.preview(function(index, file, result) {
$('#demo1').attr('src', result);
});
},
done: function(data) {
if(data.code == 1) {
window.location.reload();
} else if(data.code == 2) {
location.href = '#(ctx)/system/toLogin';
}
parent.layer.msg(data.desc, {
offset: '80%'
});
layer.closeAll('loading');
}
});
});
</script>
后台代码:
/**
* 轮播图保存
*/
@Before(value = { JMSystemApiInterceptor.class })
public void rotationChartSave() {
String image = JMUploadKit.fileUpload(this, "file", "rotationChart");
Configure rotationChart = new Configure();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
rotationChart.setValue2(sdf.format(new Date()));
boolean result = false;
if (image != null) {
rotationChart.setName("rotationChart");
rotationChart.setValue(image);
result = configureDao.save(rotationChart);
}
if (result) {
// 给type跟desc赋值
Configure rotationChart1 = configureDao.get(false);
rotationChart.setType(rotationChart1.getType() + 1);// 获取最后一个type
rotationChart.setDesc("轮播图-" + (rotationChart1.getType() + 1));
rotationChart.update();
JMResult.success(this, "新增成功");
} else {
JMResult.fail(this, "新增失败");
}
}
/**
* 轮播图更新
*/
@Before(value = { JMSystemApiInterceptor.class })
public void rotationChartUpdate() {
String image = JMUploadKit.fileUpload(this, "file", "rotationChart");
Integer rotationChartId = getParaToInt("rotationChartId",null);
Configure rotationChart = new Configure();
Configure rotationChart1 = configureDao.getById(rotationChartId);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
boolean result = false;// 标识是否报错
if (image != null) {
if (rotationChart1.getValue() != null)
ToolUpload.deleteFile(rotationChart1.getValue());
rotationChart.setId(rotationChartId);
rotationChart.setValue(image);
rotationChart.setValue2(sdf.format(new Date()));// 记录更新时间
result = configureDao.update(rotationChart);
}
if (result) {
JMResult.success(this, "修改成功");
} else {
JMResult.fail(this, "修改失败");
}
}
【2】多张
参考文章路径:https://www.layui.com/demo/up...
示例三
【1】oss上传图片
<c:set var="oss" value="https://wenbang.oss-cn-hangzhou.aliyuncs.com" />
<div class="form-group">
<label class="control-label col-md-3">引导页</label>
<div class="col-md-6">
<div class="fileinput fileinput-new" data-provides="fileinput">
<!--回显数据库图片-->
<div class="fileinput-new thumbnail" style="max-width: 200px; max-height: 150px;">
<img src="
<c:if test="${ydy.value == null}">${ctx}/assets/global/img/no.png</c:if>
<c:if test="${ydy.value != null}">${oss}${ydy.value}</c:if>"
alt="" />
</div>
<!--选择本地图片后回显-->
<div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"></div>
<div>
<span class="btn default btn-file">
<span class="fileinput-new"> 选择图片 </span>
<span class="fileinput-exists"> 改变 </span>
<input type="file" name="image">
</span>
<a href="javascript:;" class="btn red fileinput-exists" data-dismiss="fileinput"> 删除 </a>
</div>
</div>
<div class="clearfix margin-top-10">
<span class="label label-danger">NOTE!</span> 兼容 IE10+, FF3.6+, Safari6.0+, Chrome6.0+ and Opera11.1+.以上的浏览器
</div>
</div>
</div>
后台代码:
String ossFileUpload = ToolUpload.OSSFileUpload(this, "image", "configure");
地址:wenbang/upload/configure/20190116/xxx.jpg
page 页面显示缩略图:
<td>
<img src="<c:if test="${obj.value == null}">${ctx}/assets/global/img/no.png</c:if><c:if test="${obj.value != null}">${oss}${obj.value}</c:if>" style="max-width: 26px; max-height: 22px;">
</td>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。