java美图秀秀,SpringMvc整合美图秀秀M4(头像编辑器)

美图秀秀M4 头像编辑器是一款集旋转裁剪、特效美化、人像美容为一体的在线头像编辑工具。适用于有设置头像需求的BBS、SNS、微博和社区等Web产品。

3qqmim.png

美图秀秀,JAVA提供了示例可参考,流式上传 或者 标准表单上传,于是采用标准表单上传。

List items = upload.parseRequest(request);//得到所有的文件

以上为截取部分代码,美图的API采用的common-fileupload解析上传操作,但是问题出现了,items获取的值为空,查阅了部分资料,原来是SpringMvc上传配置的锅:

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

把这段代码注释掉,重新上传就可以,但是其他使用到了SpringMvc上传的Controller就不起作用了。

原因

原来springMVC已经为我们封装好成自己的文件对象了,转换的过程就在我们所配置的CommonsMultipartResolver这个转换器。

/**

* Parse the given servlet request, resolving its multipart elements.

* @param request the request to parse

* @return the parsing result

* @throws MultipartException if multipart resolution failed.

*/

protected MultipartParsingResult parseRequest(HttpServletRequest request) throws MultipartException {

String encoding = determineEncoding(request);

FileUpload fileUpload = prepareFileUpload(encoding);

try {

List fileItems = ((ServletFileUpload) fileUpload).parseRequest(request);

return parseFileItems(fileItems, encoding);

}

catch (FileUploadBase.SizeLimitExceededException ex) {

throw new MaxUploadSizeExceededException(fileUpload.getSizeMax(), ex);

}

catch (FileUploadBase.FileSizeLimitExceededException ex) {

throw new MaxUploadSizeExceededException(fileUpload.getFileSizeMax(), ex);

}

catch (FileUploadException ex) {

throw new MultipartException("Failed to parse multipart servlet request", ex);

}

}

他的转换器里面就是调用common-fileupload的方式解析,然后再使用parseFileItems()方法封装成自己的文件对象 。

List fileItems = ((ServletFileUpload) fileUpload).parseRequest(request);

上面的这句代码,springMVC已经使用过fileUpload解析过request了,而我们在Controller里面接收到的request已经是解析过的,你再次使用fileupload进行解析获取到的肯定是空,这个就是问题的所在。

解决方案

使用SpringMvc的API进行上传操作,部分伪代码:

String basePath =request.getSession().getServletContext().getRealPath("/file/avatar/");

//上传文件目录

File filePath = new File(basePath);

MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;

//注意这里获取的是avatar

MultipartFile mf = mRequest.getFile("avatar");

//用户ID做为用户头像的名称

String baseName = userType+"_"+userId;

String newFileName = baseName+"_"+FLAG_L+".jpg";

//输出头像

FileOutputStream fos = new FileOutputStream(filePath + Constant.SF_FILE_SEPARATOR + newFileName);

fos.write(mf.getBytes());fos.flush();fos.close();

5dfae20d460ba236fa8730ad0f407026.gif

作者: 小柒

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
头像上传编辑器是一款支持本地上传、预览、视频拍照和网络加载的flash头像编辑上传插件,可缩放、裁剪、旋转、定位和调色等... 小巧的身材:文件大小仅仅只有 50 KB,而新浪的头像编辑器组件有 58.1 KB,更有甚者达 80 KB 之多以上。 漂亮的外观:灰色系的外观设计,适用于所有风格的站点。还可轻松地实现换肤。 强大的功能:原图支持本地上传、视频拍照和网络加载,图片编辑有缩放、裁剪、旋转、定位和调色等功能。 丰富的接口:可自定义头像(大小、数目...)、所有文本(包括其字体,大小,颜色,方便扩展多语言站点)、可在外部接口中定义选项卡、按钮... 跨平台兼容:运行环境Flash Player 10.1+,任何浏览器 IE All、Firefox、 Chrome、Opera...都正常使用。 极致的体验:人性化的设计方式,细节上精心的处理,用户使用起来得心应手。 在线演示:http://www.fullAvatarEditor.com/demo.html 当前版本:2.3 更新内容: → 修复头像与实际选取区域偏移 1 像素的BUG; 修复默认加载的原图如果有定位数据时图片不显示的BUG。 → 发布时间:2015-04-22 历史版本: v2.2: 修复上传的原始图片没有扩展名的Bug。 发布时间:2015-01-13 v2.1: 新增上传提交方式的参数:method(值为 get 或 post); 修善构造函数可定义主swf(FullAvatarEditor.swf)和快速安装flash的swf(expressInstall.swf)的路径。 发布时间:2014-12-10 v2.0:新增在上传完成时(无论成功和失败),是否显示表示上传结果图标的参数:isShowUploadResultIcon; 新增可自定义原图和头像表单域名称的参数:src_field_name 和 avatar_field_names。 发布时间:2014-04-15 v1.9:修复了原图url中带旋转参数时,另外的上传/加载图片会沿用当前旋转值的错误; 视图参数(__initParams)新增选取框尺寸参数,至此视图已臻佳境。 发布时间:2014-02-25 v1.8:将追加到上传接口url后的参数的提交方式更改为POST,避免参数中含有特殊字符(如base64中的+号)时产生错误。如果之前的版本中有传递额外的参数到上传接口的,更新此版本后请自行修改接口文件中获取参数的方式。如:php的$_GET["x"]换成$_POST["x"]。 修复了将头像颜色调整工具隐藏(avatar_tools_visible=false)时,部分版本的 Flash Player 产生异常的错误。 修复了部分奇葩的图片在编码时产生异常的错误。 发布时间:2014-02-24 v1.7:修复了当加载的原图url中带视图参数(__initParams)时,旋转值未正确初始化的错误; 优化了生成头像的速度。 发布时间:2014-01-03 v1.6:修复了后台只能获取upload_url(上传图片的接口)中首个参数的问题。 提升了生成的头像图片的质量。 发布时间:2013-12-31 v1.5:新增头像保存时的缩放系数(需求大尺寸头像而又不想被其破坏页面布局时很有用); 新增基于原图的初始化参数InitParams(表单字段,用于修改头像时保证视图跟保存头像时一致,帮助提升用户体验)。 发布日期:2013-12-15 v1.4:修复了上传原图时如果是使用摄像头拍照的方式而得到的原图并非来自摄像头的错误。 发布日期:2013-11-13 v1.3:修复头像颜色调整未渲染到生成的图片的bug;新增生成的图片的质量控制参数 quality。 发布日期:2013-11-05 v1.2:新增是否显示头像颜色调整工具的参数 avatar_tools_visible。 发布日期:2013-10-21 v1.1:将各矩形框的参数独立出来,更加方便外观的表现。 发布日期:2013-10-04 v1.0:发布日期:2013-10-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值