CommonsMultipartFile转换成File
老师,这里使用在 ImageUtil定义的transferCommonsMultipartFileToFile的转换方法也是可以的吧! 如果是的话,这两种方法的区别是什么?

58
收起
正在回答
3回答
同学你好,transferCommonsMultipartFileToFile()方法和getInputStream()方法都可以将CommonsMultipartFile转换为File类型,相当于是演示了两种方法进行转换。再使用transferCommonsMultipartFileToFile()方法时中间多生成一个文件,而使用流就不会有这个问题。
祝:学习愉快~
好帮手慕阿满
2020-04-28 20:06:53
同学你好,关于同学的问题:
1、利用CommonsMultipartFile中的getInputStream方法来获取一个输入流,然后配合写入File对象中的方法,可以换成ImageUtil定义的transferCommonsMultipartFileToFile()方法。这两种方法的效果相同,不同的是getInputStream()方法相当于CommonsMultipartFile转换为File一个中间步骤。
2、老师相当于是演示了两种方法进行的转换。但是使用CommonsMultipartFile()需要多生成一个文件,之后用不到这个文件,所以可以删掉。

这段代码是生成上传的图片文件,需要在注册店铺之前获取到,之后才能调用addShop()方法添加到数据库中。
祝:学习愉快~
jia_蛙
2020-04-28 17:45:12
上面说的有点问题,我重新说一下我的问题:
1.在registerShop方法中的注册店铺逻辑中,因为前端用户传过来的流文件流是Spring 自带的
文件处理对象CommonsMultipartFile。所以我们这里需要将这个CommonsMultipartFile转换成
File,但是因为无法直接转换,所以这里我们编写了一个方法利用CommonsMultipartFile中的
getInputStream方法来获取一个输入流,然后通过配合输出流写入到File对象中去,这里的这个
方法可以用之前我们在ImageUtil定义的transferCommonsMultipartFileToFile的转换方法应该
也是可以的吧? 那为什么这里还有多些一个这个方法?还有这两个方法有什么区别?
2. 视频中老师在编写:
File shopImgFile = new File(PathUtil.getImgBasePath()+ ImageUtil.getRandomFileName());
的时候利用随机生成文件名创建一个File对象,然后又说什么后面在删除,(12.27分钟).这里后面
为什么要删除?而且我还有点不理解这段代码的含义,为什么要在shopService.addShop(shop,shopImgFile);
注册店铺之前执行这段代码:
//通过根路径和随机生成的文件名组合程一个File对象
File shopImgFile = new File(PathUtil.getImgBasePath()+ ImageUtil.getRandomFileName());
try {
//根据这个File对象创建对应的文件
shopImgFile.createNewFile();
} catch (IOException e) {
modelMap.put("success",false);
modelMap.put("errMsg",e.getMessage());
return modelMap;
}
try {
inputStreamToFile(shopImg.getInputStream(),shopImgFile);
} catch (IOException e) {
modelMap.put("success",false);
modelMap.put("errMsg",e.getMessage());
return modelMap;
}//2.注册店铺
if(shop!= null && shopImg != null){
//owner店主的信息是可以通过session会话来获取的,因为就不需要前端传递过来
PersonInfo owner = new PersonInfo();
owner.setUserId(1L);
shop.setOwner(owner);
//通过根路径和随机生成的文件名组合程一个File对象
File shopImgFile = new File(PathUtil.getImgBasePath()+ ImageUtil.getRandomFileName());
try {
//根据这个File对象创建对应的文件
shopImgFile.createNewFile();
} catch (IOException e) {
modelMap.put("success",false);
modelMap.put("errMsg",e.getMessage());
return modelMap;
}
try {
//方式1:直接用之前在ImageUtil.java编写的转换工具类
//File shopImgFile = ImageUtil.transferCommonsMultipartFileToFile(shopImg);
//方式2:重写定义一个File对象利用输入输出流来进行转换
inputStreamToFile(shopImg.getInputStream(),shopImgFile);
} catch (IOException e) {
modelMap.put("success",false);
modelMap.put("errMsg",e.getMessage());
return modelMap;
}
//转换File的步骤都没问题就进行店铺的注册
ShopExecution se = shopService.addShop(shop,shopImgFile);
//根据返回值判断注册情况 当前店铺状态是待审核状态
if(se.getState() == ShopSateEnum.CHECK.getState()){
modelMap.put("seccess",true);
}else {
modelMap.put("success",false);
modelMap.put("errMsg",se.getStateInfo());//返回状态对应的注释
}
//返回结果
return modelMap;
4. SSM到Spring Boot入门与综合实战
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星