CommonsMultipartFile转换成File

CommonsMultipartFile转换成File


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

http://img1.sycdn.imooc.com//climg/5ea7f0ab090c022a14800673.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,transferCommonsMultipartFileToFile()方法和getInputStream()方法都可以将CommonsMultipartFile转换为File类型,相当于是演示了两种方法进行转换。再使用transferCommonsMultipartFileToFile()方法时中间多生成一个文件,而使用流就不会有这个问题。

祝:学习愉快~

好帮手慕阿满 2020-04-28 20:06:53

同学你好,关于同学的问题:

1、利用CommonsMultipartFile中的getInputStream方法来获取一个输入流,然后配合写入File对象中的方法,可以换成ImageUtil定义的transferCommonsMultipartFileToFile()方法。这两种方法的效果相同,不同的是getInputStream()方法相当于CommonsMultipartFile转换为File一个中间步骤。

2、老师相当于是演示了两种方法进行的转换。但是使用CommonsMultipartFile()需要多生成一个文件,之后用不到这个文件,所以可以删掉。

http://img1.sycdn.imooc.com//climg/5ea81c1f09632b4207310422.jpg

这段代码是生成上传的图片文件,需要在注册店铺之前获取到,之后才能调用addShop()方法添加到数据库中。

祝:学习愉快~

  • 提问者 jia_蛙 #1
    shopImg.getInputStream()不是获取到这个File对象的字节输入流嘛? 为什么会是需要多生成一个文件?
    2020-04-28 20:17:27
  • 提问者 jia_蛙 #2
    他删除的不是shopImgFile.createNewFile();这个创建的文件而是 inputStreamToFile(shopImg.getInputStream(),shopImgFile);这里创建的文件是吧?这里 inputStreamToFile(shopImg.getInputStream(),shopImgFile);怎么会产生文件呢?他产生的是什么文件?
    2020-04-28 20:20:01
提问者 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;


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师