后端写法
首先传进来是一个数组,判断他的长度是否>0,大于0就遍历切割
,最后 map.put(“src”,FilePath+timeDf+"/"+fName +"."+ oName);就是给他返回一个url给前端。
/*文件上传页面*/
@RequestMapping("/goods/upload")
@ResponseBody
public HashMap<String, Object> upload(MultipartFile[] file){
HashMap<String, Object> map = new HashMap<>();
try {
if (file!=null&&file.length>0){
for (int i = 0; i <file.length ; i++) {
String fileName = file[i].getOriginalFilename();
//截取点后面的字符
String oName = fileName.substring(fileName.lastIndexOf(".")+1);
//时间目录
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
String timeDf = sdf.format(new Date());
//保证上传文件的唯一性
String fName = UUID.randomUUID() + "";
//拼接上传文件的全路径
String uploadName = serviceUrl + "\\" + timeDf + "\\" + fName +"."+ oName;
//创建文件对象
File f = new File(uploadName);
if (!f .exists()&&!f.isDirectory()){
f.mkdirs();
}
//保存文件
file[i].transferTo(f);
//把文件路径传到前台
map.put("src",FilePath+timeDf+"/"+fName +"."+ oName);
System.out.println("我是路径"+FilePath+timeDf+"/"+fName +"."+ oName);
}
}
//获取文件的后缀
//存0代表成功
map.put("code",0);
return map;
} catch (IOException e) {
e.printStackTrace();
}
map.put("src","");
map.put("code",1);
return map;
}
配置映射,就是真实路径和虚拟路径的映射
//文件上传注册,注册虚拟路径,实现绝对路径和虚拟路径的映射
@Configuration
public class UploadConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/upload/**").addResourceLocations("file:" +"D://IdeaProjects//springboot//springbootimage/");
}
}
图片上传html代码
<input type="hidden" name="url1" class="image">
<div class="layui-form-item">
<label class="layui-form-label ">主图:</label>
<div class="layui-upload">
<button type="button" class="layui-btn" id="test0">上传图片</button>
<div class="layui-upload-list" style="margin-left: 100px">
<img class="layui-upload-img" id="demo0" width="200" height="100" >
<p id="demoText"></p>
</div>
</div>
</div>
<input type="hidden" name="url2" class="multiple_show_img" value="">
<div class="layui-form-item">
<label class="layui-form-label">轮播图片:</label>
<div class="layui-upload">
<button type="button" class="layui-btn" id="multiple_img_upload">多图片上传</button>
<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
预览:
<div class="layui-upload-list" id="div-slide_show"></div>
</blockquote>
</div>
</div>
<script>
layui.use('upload', function(){
var $ = layui.jquery
,upload = layui.upload;
//普通图片上传
var uploadInst = upload.render({
elem: '#test0'
,url: '/manager/goods/upload/'
,accept:'url'
,size:50000
,before: function(obj){
obj.preview(function(index, file, result){
//显示上传图片
$('#demo0').attr('src', result);
});
}
,done: function(res){
//如果上传失败
if(res.code > 0){
return layer.msg('上传失败');
}
//上传成功
var demoText = $('#demoText');
demoText.html('<span style="color: #4cae4c;">上传成功</span>');
var fileupload = $(".image");
//把图片在项目中的路径存入到 属性 class=image的input框中
fileupload.attr("value",res.src);
console.log(fileupload.attr("value"));
}
,error: function(){
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
uploadInst.upload();
});
}
});
});
var multiple_images = [];
layui.use('upload', function () {
var upload = layui.upload;
var oIds="";
//多图片上传
upload.render({
elem: '#multiple_img_upload'
,url: '/manager/goods/upload/'
,multiple: true
,before: function(obj){
//预读本地文件示例,不支持ie8
obj.preview(function(index, file, result){
$('#div-slide_show').append('<img src="'+ result +'" alt="'+ file.name
+'" title="点击删除" class="layui-upload-img" "delMultipleImgs(this)">')
});
}
,done: function(res){//如果上传失败
if(res.code > 0){
return layer.msg('上传失败');
}
//上传成功
var demoText = $('#demoText');
demoText.html('<span style="color: #4cae4c;">上传成功</span>');
var fileupload = $(".multiple_show_img");
//把图片在项目中的路径存入到 属性 class=multiple_show_img的input框中
oIds+=res.src+",";
fileupload.attr("value",oIds);
console.log(fileupload.attr("value"));
},error: function(){
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
uploadInst.upload();
});
}
});
});
</script>