收藏夹吃灰系列:使用MultipartFile实现图片指定路径上传下载并使用postman测试教程 | 附完整源码,强烈建议收藏!
Posted bug菌√
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了收藏夹吃灰系列:使用MultipartFile实现图片指定路径上传下载并使用postman测试教程 | 附完整源码,强烈建议收藏!相关的知识,希望对你有一定的参考价值。
前言:
项目基本都会涉及图片的上传下载,今晚,bug菌给大家带来一份干货!手把手教学,如何通过MultipartFile实现图片的上传,以及通过path相对路径下载图片?至于怎么实现,咱们往下看,好好看好好学!
若是文章对小伙伴们有所帮助,还请不忘给bug菌一个赞,你们的鼓励就是对bug菌最大的支持!
那么接下来,干正事啦!bug菌要开始上课了喔~
MultipartFile 这个类一般是用来接受前台传过来的文件,我也通过该类来接收前端传的图片!
controller
/**
* 图片导入
* @param imageFile
* @param response
* @return
*/
@PostMapping(value = "/imageUpload")
@ApiOperation(value = "接线图片上传", notes = "接线图片上传")
public BaseResponse imageUpload(@RequestParam(value = "imageFile", required = true) MultipartFile imageFile) {
return iMyService.imageUpload(imageFile);
}
/**
* 图片导出
* @param imagePath
* @param response
*/
@GetMapping(value = "/imageDownload")
@ApiOperation(value = "接线图片下载", notes = "接线图片下载")
public void imageDownload(@RequestParam(value = "imagePath", required = true) String imagePath,HttpServletResponse response) {
return iMyService.imageDownload(imagePath,response);
}
service
/**
* 图片上传
* @param imageFile
* @return
*/
BaseResponse imageUpload(MultipartFile imageFile);
/**
* 图片下载
* @param imagePath
* @return
*/
void imageDownload(String imagePath, HttpServletResponse response);
application-dev.properties
#图片保存地址
jxt.image.path=G:/image/
serviceImpl
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class MyServiceImpl implements IMyService {
@Value("${jxt.image.path}")
File imagePath;
private static final List<String> CONTENT_TYPES = Arrays.asList("image/jpeg", "image/png", "image/jpg");
/**
* 图片上传
*/
@Override
public BaseResponse imageUpload(MultipartFile image) {
// 校验图片类型
String contentType = image.getContentType();
if (!CONTENT_TYPES.contains(contentType)){
// 图片类型不合法,直接返回异常
log.info("文件类型不合法:{}", image.getOriginalFilename());
return ResponseUtil.getErrorByCodeEnum(ErrorCodeEnum.IMAGE_TYPE_ERROR);
}
try {
//校验是否传空
if (image == null || image.isEmpty()) {
return ResponseUtil.getErrorByCodeEnum(ErrorCodeEnum.IMAGE_UPLOAD_EMPTY);
}
//获取文件名
String fileName = image.getOriginalFilename();
log.info("上传的文件名:" + fileName);
//设置文件存储路径
//以时间作为文件夹分类:eg:G:/images/20210615/demo.jpg
String filePath = "/" + DateFormatUtils.format(new Date(), "yyyyMMdd") + "/" + fileName;
File file = new File(imagePath, filePath);
//检测是否存在该目录
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
//写入文件
image.transferTo(file);
//todo 将路径写入数据库
return ResponseUtil.getSuccessResponse(ErrorCodeEnum.IMAGE_UPLOAD_SUCCESS);
} catch (IOException e) {
log.error(e.getMessage(),e);
}
return ResponseUtil.getErrorByCodeEnum(ErrorCodeEnum.IMAGE_UPLOAD_ERROR);
}
/**
* 根据图片地址下载
*
* @return 图片
*/
@Override
public void imageDownload(String path,HttpServletResponse response) {
FileInputStream inputStream = null;
try {
// 判断路径是否为空
if (StringUtils.isEmpty(path)) {
throw new RuntimeException(ErrorCodeEnum.IMAGE_EMPTY.getMessage());
}
//获取文件真实路径
String fileUrl = imagePath + path;
//设置文件头,最后一个参数是设置下载文件名
response.setHeader("Content-Disposition", "attachment;fileName=" + FilenameUtils.getName(path));
File file = new File(fileUrl);
inputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream();
IOUtils.copyLarge(inputStream, outputStream);
outputStream.flush();
} catch (IOException e) {
log.error(e.getMessage(),e);
} finally {
//关流
IOUtils.closeQuietly(inputStream);
}
}
}
接下来就是见证奇迹的时刻了!代码写的是否无误,还需测!高光时刻~
1、打开postman;先进行图片上传的接口测试!示例如下具体操作!看好:能不能行,一张图给你答复。
2、接着点击Send发送请求后,好家伙,竟然上传成功了!不是bug不是bug(内心压根丝毫不慌!)
3、接下来,继续测试图片下载接口,看看是否能成功?params中填好你所上传好的图片相对地址,看看是否能拿到图片,答案马上揭晓;
噔噔噔~~~
ok,接口调用成功,图片已成功拿到!
4、再看看浏览器是否能直接根据url自动下载?操作:打开浏览器,将postman中的访问URL粘贴到浏览器搜索栏,直接回车即可。如下:
eg:http://192.168.0.136:8083/my-base/imageDownload?imageFileName=/20210604/wiringDiagram.png
好家伙,搞定!图片也下载成功了!
OK,以上就是本期的所有干货内容啦!若是您还满意,请不要吝啬您的一个赞哦,要是我,果断就给它pia的一下点亮咯!
不用犹豫直接进我的收藏夹吃灰去吧!不管以后用不用的上,先吃上灰再说,谁知道后期还捞不捞的到呢?
若是还不够吃,bug菌还有!再给你投点?
热文推荐:
❤如果文章对您有所帮助,就请在文章末尾的左下角把大拇指点亮吧!(#^.^#);
❤如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;
❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】;
❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);
❤版权声明:本文为博主原创文章,转载请附上原文出处链接和本文声明,版权所有,盗版必究!(*^▽^*).
以上是关于收藏夹吃灰系列:使用MultipartFile实现图片指定路径上传下载并使用postman测试教程 | 附完整源码,强烈建议收藏!的主要内容,如果未能解决你的问题,请参考以下文章
收藏夹吃灰系列:Springboot配置Thymeleaf实现静态页面访问 | 超级详细,建议收藏!
收藏夹吃灰系列:实现springboot使用JDK自带的keytool生成SSL证书并配置HTTPS | 超级详细,建议收藏!
收藏夹吃灰系列:实现图片倒排序并取出时间最近的那一张!并下载到本地 | 超级详细,建议收藏!
收藏夹吃灰系列:实现图片倒排序并取出时间最近的那一张!并下载到本地 | 超级详细,建议收藏!