springmvc图片文件上传接口

 2023-09-06 阅读 21 评论 0

摘要:springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller;import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List;import javax.annotation.PostConstr

springmvc图片文件上传

用MultipartFile文件方式传输

Controller

package com.controller;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.imageio.ImageIO;import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import com.service.PictureService;
import com.utils.PictureUtils;
import com.entity.JsonResult;
import com.entity.SimpleJsonResult;@Controller
public class PictureController {private static final Logger logger = Logger.getLogger(PictureController.class);@Resourceprivate PictureService service;@Value("#{settings['picturePath']}")private String PATH;/*** * 图片文件上传接口* * @param files*            上传的文件图片数组* @param childPath*            子路径* */@RequestMapping(value = "baseSave", method = RequestMethod.POST)@ResponseBodypublic JsonResult save(@RequestParam(value = "file", required = false) MultipartFile[] files, String childPath) {SimpleJsonResult result = new SimpleJsonResult(); // 自定义的一个输出类
if (files == null || files.length == 0) {return result.setExecption("失败");}for (MultipartFile file : files) {if (file.isEmpty())return result.setExecption("失败");try {if (ImageIO.read(file.getInputStream()) == null)return result.setExecption(EXECPTION_0041);} catch (IOException e) {logger.error("图片文件读取失败");}}String name;int size = 0;List<String> url = new ArrayList<>();String paths = PATH;if (StringUtils.isNotBlank(childPath)) {if (childPath.equals(PictureUtils.HELPS) || childPath.equals(PictureUtils.NEWS)) {paths = paths + childPath + File.separator;File filePath = new File(paths);if (!filePath.exists())filePath.mkdirs();}}for (MultipartFile file : files) {try {name = service.save(file, paths);size++;url.add(name);} catch (IOException e) {logger.error(e, e);return "失败";}}return SimpleJsonResult.buildSuccessResult(url).setModel("number", size);}@PostConstructpublic void init() {File file = new File(PATH);file.setWritable(true, false);if (!file.exists())file.mkdirs();if (!file.canWrite()) {logger.error(file.getAbsolutePath() + ":文件夹没有权限创建");return;}logger.info("filePath:" + PATH);} }
SimpleJsonResult 类格式
  //SimpleJsonResult 类格式/** public static SimpleJsonResult buildFailedSimpleJsonResult(IExceptionCode code) {SimpleJsonResult result = new SimpleJsonResult();result.setSuccess(false);result.setMessage(code.getDescribe());result.setCode(code.getCode());return result;}public static SimpleJsonResult buildSuccessSimpleJsonResult(IExceptionCode code) {SimpleJsonResult result = new SimpleJsonResult();result.setSuccess(true);result.setMessage(code.getDescribe());result.setCode(code.getCode());return result;}public static SimpleJsonResult build() {SimpleJsonResult result = new SimpleJsonResult();return result;}public SimpleJsonResult setExecption(IExceptionCode code) {if (code.getCode().equals("0"))setSuccess(true);elsesetSuccess(false);this.code = code.getCode();setMessage(code.getDescribe());return this;};
*/

service类实现

package com.service;import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;import javax.annotation.Resource;
import javax.imageio.ImageIO;import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;import com.entity.Picture;
import com.mappers.PictureMapper;
import com.utils.PictureUtils;@Service
public class PictureService {@Resourceprivate PictureMapper mapper;private String no = "TP";@Transactional(timeout = 3000)public String save(MultipartFile file, String path) throws IOException {//Picture width and heightBufferedImage bff =ImageIO.read(file.getInputStream());Picture entity = new Picture(); //实体类String fileName = file.getOriginalFilename();String name = this.getName(fileName, file.getSize());name = PictureUtils.save(file, path, name); //图片保存到服务器地址中entity.setOriginal(fileName); // 上传的名称entity.setName(name); // 名称entity.setWidth(bff.getWidth()); // 宽entity.setHeight(bff.getHeight()); //高mapper.insert(entity); //添加进去return name;}private String getName(String fileName, long size) { //重命名StringBuilder sb = new StringBuilder();String[] split = fileName.split("\\.");String suffix = split[split.length - 1];sb.append(fileName).append(System.currentTimeMillis()).append(new Random().nextFloat()).append(Thread.currentThread().getId());String name = DigestUtils.md2Hex(sb.toString()).toUpperCase();return sb.delete(0, sb.length()).append(no).append(name).append(".").append(suffix).toString();}
}

PictureUtils 图片保存工具类

package com.utils;import java.io.IOException;import org.springframework.web.multipart.MultipartFile;import net.coobird.thumbnailator.Thumbnails;public class PictureUtils {public static long SIZE = 100L << 10;public static String SUFFIX_JPG = "jpg";public static String NEWS = "news";public static String HELPS = "helps";
//保存图片public static String save(MultipartFile file, String path, String name) throws IOException {int i = 1;long size = file.getSize();Thumbnails.of(file.getInputStream()).scale(1).outputQuality(1f).toFile(path + i + "_" + name);if (size > SIZE) {float ratio = 1.0f / (float) (size / SIZE);++i;Thumbnails.of(file.getInputStream()).scale(1).outputQuality(ratio).toFile(path + i + "_" + name);}return i + "_" + name;}
// 设置宽高保存public static String save(MultipartFile file, String path, String name, int width, int heigth, boolean compresseion)throws IOException {int i = 1;long size = file.getSize();Thumbnails.of(file.getInputStream()).size(width, heigth).outputQuality(1f).toFile(path + i + "_" + name);if (size > SIZE) {float ratio = 1f / (float) (size / SIZE);++i;Thumbnails.of(file.getInputStream()).size(width, heigth).outputQuality(ratio).toFile(path + i + "_" + name);}return i + "_" + name;}}

实体类

package com.entity;public class Picture {private static final long serialVersionUID = 1L;@Columnprivate String original;@Columnprivate String name;@Columnprivate Integer width;@Columnprivate Integer height;public Picture() {super();}
}

配置文件

No=TP
jpg=.jpg
picturePath=/picture/

 

 

偶遇晨光

2016-05-30

 

转载于:https://www.cnblogs.com/chenyq/p/5542385.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/8131.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息