Controller层:
@ResponseBody
@RequestMapping(value = "", method = RequestMethod.POST)
public JSONObject addTroubleTicket(HttpServletRequest request,
@RequestParam(value="accessToken",required=true)String accessToken,
TroubleTicket troubleTicket,
@RequestParam(value="file",required=false) MultipartFile[] images) throws Exception{
troubleTicketReportService.addTroubleTicket(troubleTicket, images, accessToken);
return returnSuccess();
}
ps:图片表单提交,所以不能用@RequestBody接收参数,可以用对象接收。

Service层:
@Service("troubleTicketReportImpl")
public class TroubleTicketReportImpl implements TroubleTicketReportService{ @Resource(name="troubleTicketDaoImpl")
private TroubleTicketDao troubleTicketDao; @Resource(name="electrombileDaoImpl")
private ElectrombileDao electrombileDao; private final String upload_img_root = PropertiesUtil.getStringValue("upload_root"); private final String upload_img_report_dir = PropertiesUtil.getStringValue("upload_img_report_dir"); private final String upload_img_report_url = PropertiesUtil.getStringValue("upload_img_report_url"); //文件最大值 kb,默认1024kb
private final Integer max_img_size =PropertiesUtil.get("trouble_max_img_size", 1024); @Override
public void addTroubleTicket(TroubleTicket ttk,MultipartFile[] images,String accessToken) {
String electrombileCode = ttk.getElectrombileCode();
ValidUtil.valid("车辆编码", electrombileCode, "{'required':true,'regex':'" + RegexConstants.NUM_10_PATTERN + "'}"); String remark = ttk.getRemark();
if(remark != null && remark != ""){
ValidUtil.valid("备注", remark, "{'required':false,'regex':'" + RegexConstants.STRING_0_300_PATTERN + "'}");
} String reportContent = ttk.getReportContent();
if(reportContent != null && reportContent != ""){
ValidUtil.valid("故障内容", reportContent, "{'required':false,'regex':'" + RegexConstants.STRING_0_300_PATTERN + "'}");
} String types = ttk.getTroubleType();
if(types.isEmpty() || types ==null){
throw new BizException("E1000022", MessageUtil.getMessage("E1000022","维修类型"));//维修类型不存在
}
if(types.contains(",")){
String[] type = types.split(",");
for(String t :type){
if(null==TroubleType.contains(Integer.valueOf(t))){
throw new BizException("E1000015", MessageUtil.getMessage("E1000015","维修类型"));
}
}
}else {
if(null==TroubleType.contains(Integer.valueOf(types))){
throw new BizException("E1000015", MessageUtil.getMessage("E1000015","维修类型"));
}
} Electrombile electrombile = new Electrombile();
electrombile.setElectrombileCode(electrombileCode);
List<Electrombile> elist = electrombileDao.queryListByParams(electrombile,1,10);
if(elist.size() ==0 || elist == null || elist.size() > 1){
throw new BizException("E1000022", MessageUtil.getMessage("E1000022","车辆信息"));//车辆信息不存在
} //查看status=0,1,2,3的数据有几条
TroubleTicket troubleTicket = new TroubleTicket();
troubleTicket.setElectrombileCode(electrombileCode);
int size = troubleTicketDao.selectCountByStatus(troubleTicket);
if(size > 0){
throw new BizException("E1000014", MessageUtil.getMessage("E1000014","报修信息"));//报修信息存在
} String reportPhoto = "";
if(images != null && images.length!=0){
reportPhoto = saveImages(images);
} AppUserDTO usrDto = KeyUtil.getAppUserByAccessToken(accessToken);
AppUser user = usrDto.getUserInfo();
Integer subscriberId = user.getId();//用户ID // ttk.setTicketCode(String.valueOf(System.currentTimeMillis()));//工单编号 ttk.setId(null);
ttk.setReportDate(new Date());
ttk.setReportPhoto(reportPhoto);
ttk.setSubscriberId(subscriberId);
ttk.setStatus(0);
troubleTicketDao.insertSelective(ttk);
} @Override
public TroubleTicket queryByElectrombileCode(String accessToken) {
AppUserDTO usrDto = KeyUtil.getAppUserByAccessToken(accessToken);
AppUser user = usrDto.getUserInfo();
String electrombileCode = user.getElectrombileCode();
TroubleTicket ttk = troubleTicketDao.selectByElectrombileCode(electrombileCode);
return ttk;
} private String saveImages(MultipartFile[] images) { //当前时间 的 年月日路径 2017/06/27
String folderpath = DateUtil.getToday();
//如果不是以/ 结尾 添加斜杠/ /smart-lease-pub/imgreport --> /smart-lease-pub/imgreport/
String uploadImgReportDir = upload_img_report_dir;
if(!upload_img_report_dir.endsWith("/")){
uploadImgReportDir +="/";
} StringBuilder urls = new StringBuilder(); //最多只能上传4张报修图片
if(images.length>4) {
throw new ValidException("E1000017", MessageUtil.getMessage("E1000017","图片张数"));
} for(MultipartFile image : images){ // 文件类型校验 image jpeg bmp.
String contentType = image.getContentType();
if(!StringUtils.isBlank(contentType)){
if (contentType.equals("image/jpeg") || contentType.equals("image/png")
|| contentType.equals("image/bmp")) {
} else {
throw new ValidException("E1000015", MessageUtil.getMessage("E1000015","图片类型"));//图片类型不合法
}
} else {
throw new ValidException("E1000013", MessageUtil.getMessage("E1000013","图片类型")); //图片类型不允许为空
} //文件大小校验
if(image.getSize() == 0){
throw new ValidException("E1000013", MessageUtil.getMessage("E1000013","图片内容"));
} //文件大小大于配置最大值
long fileSize = image.getSize();
if(fileSize > max_img_size*1024){
throw new ValidException("E1000031", MessageUtil.getMessage("E1000031", new Object[]{"图片大小",max_img_size*1024}));
} //图片保存路径和访问URL不能为空
if(StringUtils.isBlank(upload_img_report_dir) || StringUtils.isBlank(upload_img_report_url)){
throw new ValidException("E1000013", MessageUtil.getMessage("E1000013","图片保存路径和访问URL"));
} String fileName = System.currentTimeMillis() + RandomUtil.getRandomNumber(4) + ".png"; //时间戳 + 四位随机数
//文件完整路径示例 : /service/media/smart-lease-pub/imgreport/2018/12/12/xxxxxx.png
String path = upload_img_root + uploadImgReportDir + folderpath + "/" ;
File dir = new File(path);
if(!dir.exists()){
dir.mkdirs();
}
path += fileName;
File newFile=new File(path);
try {
image.transferTo(newFile);
}catch(Exception e) {
throw new BizException("E1000038", MessageUtil.getMessage("E1000038","保存图片"));
}
String url = upload_img_report_url + uploadImgReportDir + folderpath + "/" + fileName; urls.append(url);
urls.append(Constants.URL_SPLIT);//多个用|分割
}
return urls.substring(0,urls.length()-1);//去掉最后一个分隔符
} }

java端同时获取批量上传图片及其他数据的更多相关文章

  1. android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值

    1,关于java端类及接口定义请参考: android NDK 实用学习-获取java端类及其类变量 2,对传过来的参数进行赋值: 对bool类型成员进行赋值  env->SetBooleanF ...

  2. android NDK 实用学习(一)-获取java端类及其类变量

    近期为android 端项目包装一些c++代码,故学习ndk相关知识,现总结如下: 1,java与c++类型参照图: 2,此测试中使用的java类: package com.dasea.test.co ...

  3. CkEditor批量上传图片(java)

    CKEditor上传视频CKEditor批量上传图片flvplayer.swf播放器CKEditor整合包(v4.6.1) ------------------------------------ 最 ...

  4. -Android -线程池 批量上传图片 -附php接收代码

    (出处:http://www.cnblogs.com/linguanh/) 目录: 1,前序 2,类特点 3,用法 4,java代码 5,php代码 1,前序 还是源于重构,看着之前为赶时间写着的碎片 ...

  5. 使用plupload绕过服务器,批量上传图片到又拍云

    本文最初发布于我的个人博客:Jerry的乐园 综述 论坛或者贴吧经常会需要分享很多图片,上传图片比较差的做法是上传到中央服务器上,中央服务器再转发给静态图片服务器.而这篇文章讲介绍如何使用pluplo ...

  6. 使用WebUploader客户端批量上传图片,后台使用springMVC接收实例

    使用WebUploader客户端批量上传图片,后台使用springMVC接收实例 我是搞Java后台的,因为最近主管让用webUploader写客户端,但是在网上找了很多,能够复制就能用的并没有几个, ...

  7. Java 网络爬虫获取网页源代码原理及实现

    Java 网络爬虫获取网页源代码原理及实现 1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL ...

  8. java调用shell获取返回值

    转自:http://blog.csdn.net/tengdazhang770960436/article/details/12014839 1.shell文件return.sh echo 1 echo ...

  9. phpCAS::handleLogoutRequests()关于java端项目登出而php端项目检测不到的测试

    首先,假如你有做过cas,再假如你的cas里面有php项目,这个时候要让php项目拥有cas的sso功能,你需要改造你的项目,由于各人的项目不同,但是原理差不多,都是通过从cas服务器获取sessio ...

随机推荐

  1. 深入基础(四)Buffer,转码

    Buffer     前面提及到一些关于buffer类的问题,当时不是很明确 那么就次机会顺便深入探讨一下这个东西到底干嘛的出现在什么时候,如何使用.昨天跟朋友聊天他说我每一篇博文内容太长太长了 虽然 ...

  2. 超炫酷的 Docker 终端 UI lazydocker

    A simple terminal UI for both docker and docker-compose, written in Go with the gocui library. https ...

  3. os 模块常用方法

    os.remove()删除文件 os.rename()重命名文件 os.walk()生成目录树下的所有文件名 os.chdir()改变目录 os.mkdir/makedirs创建目录/多层目录 os. ...

  4. Xshell远程连接服务器

    Xshell远程连接服务器 打开xshell后找到左上角第一个“文件”点击,弹出来一个下拉框,选择“新建”点击(或者直接按下快捷键“Alt+n”).         点击“新建”之后就会出现下面这样一 ...

  5. Ubuntu16.04忘记MySQL5.7的root用户密码之解决方案

    其实也就四步,如下: 修改配置文件 sudo vimi /etc/mysql/mysql.conf.d/mysqld.cnf 并在 在[mysqld]下方的skip-external-locking下 ...

  6. Java从指定URL下载文件并保存到指定目录

    1.基本流程 当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步: (1)客户端发起一个url请求,获取连接对象. (2)服务器解析url,并且 ...

  7. Spring源码之DefaultListableBeanFactory及资源载入

    1.XmlBeanFactory 的使用,参考MyEclipse Spring 学习总结一 Spring IOC容器 public static void main(String[] args) { ...

  8. Jenkins定时任务的配置

    在任务配置中,在 构建触发器(Build Triggers)-->勾选"定时构建"-->在输入框中配置触发时间表达式 以上配置,类似cron表达式,表示在5月27日23 ...

  9. Linux下java进程CPU占用率高分析方法(二)

    1. 通过 top 命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID:2. 通过 ps aux | grep PID 命令进一步确定具体的线程信息:3. 通过 ps -mp pi ...

  10. tomcat中设置Java 客户端程序的http(https)访问代理

    1.假定http/https代理服务器为 127.0.0.1 端口为8118 2.在tomcat/bin/catalina.sh脚本文件中设置JAVA_OPTS,如下图: 保存后重启tomcat就能生 ...