文件上传本地底层代码的理解

一段关于文件上传调用的底层方法,

public Map exportFileToLocal(MultipartFile uploadfile, String
filePath, String localHost) {

    FileOutputStream fos = null;
    BufferedOutputStream bos = null;
    UUID uuid = UUID.randomUUID();
    Calendar cale = Calendar.getInstance();
    int year = cale.get(1);
    int month = cale.get(2) + 1;
    String monthStr = String.valueOf(month);
    if (monthStr.length() == 1) {
        monthStr = "0" + monthStr;
    }
    String dirName = year + monthStr;
    String fileOriginalName = uploadfile.getOriginalFilename();
    
    String suffix = fileOriginalName.substring(fileOriginalName.lastIndexOf("."));
    
    File file = new File(filePath + dirName);
    HashMap map = new HashMap();
    HashMap var17;
    try {
        if (!file.exists() || !file.isDirectory()) {
            file.mkdir();
        }

        fos = new FileOutputStream(new File(filePath + dirName, uuid.toString() + suffix));
        bos = new BufferedOutputStream(fos);
        byte[] bytes = uploadfile.getBytes();
        bos.write(bytes);
        String fileUrl = localHost + "/" + dirName + "/" + uuid + suffix;
        String fileCompletePath = filePath + dirName + "/" + uuid + suffix;
        map.put("message", "success");
        map.put("fileUrl", fileUrl);
        map.put("filePath", fileCompletePath);
        map.put("filePosition", "local");
        HashMap var19 = map;
        return var19;
    } catch (Exception var29) {
        var29.printStackTrace();
        map.put("message", "fail");
        var17 = map;
    } finally {
        if (bos != null) {
            try {
                bos.close();
            } catch (IOException var28) {
                var28.printStackTrace();
            }
        }

    }

    return var17;
}

一共传入三个参数,一个是本来传入的文件,第二第三个参数是自己拼接的地址,分别是是图片地址,将要保存的本地地址,然后中间用到了缓存流、uuid生成唯一序列号,保存了这个文件到本地。其实在本科期间也做过类似的代码,但是那会不是这种复杂的走逻辑的保存,就是直接指定图片的地址在那个文件夹这样的,总之一个原理。加油加油。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值