多图片上传-springboot

本文将介绍如何在SpringBoot项目中实现多图片上传的功能,包括文件上传的配置、控制器处理上传请求以及存储和访问上传的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多图片上传-springboot

@RequestMapping(value = "save.do")
	@ResponseBody
	public String save(HttpServletRequest request, HttpServletResponse response, ModelMap model,
			@RequestParam("logos")MultipartFile[] files) {
List<String> logos;
			
//			if(files!=null) {
//				for(int i=0;i<files.length;i++) {
//					MultipartFile file = files[i];
//					// 获取文件名
//			        String fileName = file.getOriginalFilename();
//			        log.info("上传的文件名为:" + fileName);
//			        String prefixName = fileName.substring(0, fileName.lastIndexOf("."));
//			        String suffixName = fileName.substring(fileName.lastIndexOf("."));
//			        log.info("上传的后缀名为:" + suffixName);
//			        
//			        File dest = new File(filePath + fileName);
//			        // 检测是否存在目录
//			        if (!dest.getParentFile().exists()) {
//			            dest.getParentFile().mkdirs();
//			        }
//			        if(dest.exists()) {
//			        	//已有同名文件
// 
//			        // fileName = prefixName + UUID.randomUUID() + suffixName;
// dest = new File(filePath + prefixName+System.currentTimeMillis()+suffixName);// }// try {// file.transferTo(dest);// //获取访问路径// logos.add(dest.getPath());// } catch(Exception e) {// e.printStackTrace();// result = "文件上传失败!";// }// }// }// String tempStr = logos.toString();//[string1,string2]// vo.setLogo(tempStr.substring(1, tempStr.length()-1));//string1,string2

}


//解决中文问题,liunx下中文路径,图片显示问题

@RequestMapping("upload.do")
public String save(HttpServletRequest request, @RequestParam MultipartFile[] myfile) throws IOException {

List<Long> ids = new ArrayList<>();
if (myfile.length==0) {
return null;
} else {

for (MultipartFile multipartFile : myfile) {
String contentType = multipartFile.getContentType();

if (StringUtils.endsWithAny("image/jpeg", "image/gif","image/jpeg","image/png",contentType)) {

InputStream inputStream = multipartFile.getInputStream();

String originalFilename = multipartFile.getOriginalFilename();
Date date=new Date();

String dateStr = DateUtils.getDateStr(date);

FileImgVo fileImgVo=new FileImgVo();

FileInfoVo fileInfoVo=new FileInfoVo();

fileInfoVo.setFileDesc("");

String fileRelativePath="img/"+dateStr;

fileInfoVo.setFileRelativePath(fileRelativePath);

fileInfoVo.setFileSaveName(UUID.randomUUID().toString());

fileInfoVo.setFileExtensionName(originalFilename.substring(originalFilename.lastIndexOf("."), originalFilename.length()));

fileInfoVo.setFileName(originalFilename);

Long size = multipartFile.getSize();

fileInfoVo.setFileSize(new Double(size));

BufferedImage bufferedImage = ImageIO.read(inputStream);

if (bufferedImage!=null) {
fileImgVo.setImgFileHight(bufferedImage.getHeight());
fileImgVo.setImgFileWidth(bufferedImage.getWidth());
}

File file=new File(fileLocation+fileRelativePath);

if (!file.exists()) {
file.mkdirs();
}

File target=new File(file, fileInfoVo.getFileSaveName()+fileInfoVo.getFileExtensionName());

String format=contentType.substring(contentType.lastIndexOf("/")+1, contentType.length());

try {
ImageIO.write(bufferedImage, format, target);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//文件id
ids.add(id);
}

}


}
return StringUtils.join(ids, ",");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值