失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java上传图片回显_【java】批量上传图片并回显功能

java上传图片回显_【java】批量上传图片并回显功能

时间:2021-06-24 07:27:14

相关推荐

java上传图片回显_【java】批量上传图片并回显功能

一、前言

在电商的网站中,图片上传功能必不可少,小编在最近的项目中就有遇到了一个批量上传图片并且要回显的功能。可以说这是一个很常见的功能了,已经烂大街了,但是小编还是要认真的分析一下,以便日后用到。

二、上传功能分析

我实现的上传框架是JQuery+SpringMvc+spring+FastDFS。

前台借助KindEditor的上传文件的插件,从而达到上传和回显的功能。关于KindEditor的使用,小编会在后面的文章中向大家介绍。

实现的效果如下:

实现流程:

点击上传图片,会弹出“批量图片上传”的模态窗体,点击添加图片,就可以选择要添加的图片,可以选择一张,也可以选择多张,点击开始上传就会把选中的图片上传到FastDFS上面,然后回显到空白的位置。

三、功能实现

3.1 前台编写

上传图片按钮:

页面初始化完毕后执行js中 的代码,它会创建一个富文本编辑器,然后进行初始化,初始化的时候,会调用Common.js中的createEditor方法,创建一个富文本编辑器。

然后又会调用init方法,来实例化一个Common.js中的实例,初始化图片上传器。

上传图片

Commom.js:

var TT = TAOTAO = {

// 编辑器参数

kingEditorParams : {

//指定上传文件参数名称,Controller中接收参数使用的参数名

filePostName : "uploadFile",

//指定上传文件请求的url。

uploadJson : '/pic/upload',

//上传类型,分别为image、flash、media、file

dir : "image"

},

createEditor : function(select){

return KindEditor.create(select, TT.kingEditorParams);

},

init : function(data){

// 初始化图片上传组件

this.initPicUpload(data);

},

// 初始化图片上传组件

initPicUpload : function(data){

$(".picFileUpload").each(function(i,e){

var _ele = $(e);

_ele.siblings("div.pics").remove();

_ele.after('\

\ ');

// 回显图片

if(data && data.pics){

var imgs = data.pics.split(",");

for(var i in imgs){

if($.trim(imgs[i]).length > 0){

_ele.siblings(".pics").find("ul").append("

");

}

}

}

//给“上传图片按钮”绑定click事件

$(e).click(function(){

var form = $(this).parentsUntil("form").parent("form");

//打开图片上传窗口

KindEditor.editor(TT.kingEditorParams).loadPlugin('multiimage',function(){

var editor = this;

editor.plugin.multiImageDialog({

clickFn : function(urlList) {

var imgArray = [];

KindEditor.each(urlList, function(i, data) {

imgArray.push(data.url);

form.find(".pics ul").append("

");

});

form.find("[name=image]").val(imgArray.join(","));

editor.hideDialog();

}

});

});

});

});

}

};

3.2 后台的编写

后台使用,就必须要先导入两个jar包:

Commons-io.jar

Commons-fileupload.jar

然后在springmvc.xml中配置多媒体解析器:

响应的内容:

约定大于配置

返回格式(JSON):

//成功时

{

"error" : 0,

"url" : "/path/to/file.ext"

}

//失败时

{

"error" : 1,

"message" : "错误信息"

}

需要创建一个pojo描述返回值。

Pojo中有三个属性:error、url、message。

public class PictureResult {

private int error;

private String url;

private String message;

public int getError() {

return error;

}

public void setError(int error) {

this.error = error;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

}

3.2.1 Service层

接收图片数据,把图片上传到图片服务器,返回PictureResult 。需要使用FastDFSClient工具类。

参数:MultiPartFile pictureFile

返回值:PictureResult

@Service

public class PictureServiceImpl implements PictureService {

@Override

public PictureResult uploadPic(MultipartFile picFile) {

PictureResult result = new PictureResult();

//判断图片是否为空

if (picFile.isEmpty()) {

result.setError(1);

result.setMessage("图片为空");

return result;

}

//上传到图片服务器

try {

//取图片扩展名

String originalFilename = picFile.getOriginalFilename();

//取扩展名不要“.”

String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);

FastDFSClient client = new FastDFSClient("classpath:properties/client.conf");

String url = client.uploadFile(picFile.getBytes(), extName);

//把url响应给客户端

result.setError(0);

result.setUrl(url);

} catch (Exception e) {

e.printStackTrace();

result.setError(1);

result.setMessage("图片上传失败");

}

return result;

}

}

3.2.2 Controller

接收上传的图片信息,调用Service把图片上传到图片服务器。返回json数据。需要使用@ResponseBody

@Controller

public class PictureController {

@Autowired

private PictureService pictureService;

@RequestMapping("/pic/upload")

@ResponseBody

public PictureResult uploadFile(MultipartFile uploadFile) {

PictureResult result = pictureService.uploadPic(uploadFile);

return result;

}

}

四、小结

批量导入也是很有用的,导入图片,导入文档,这些操作都可以为自己增分。

如果觉得《java上传图片回显_【java】批量上传图片并回显功能》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。