springboot/springmvc实现文件上传

本文介绍如何使用Java在本地接收文件上传,包括设置上传路径、处理文件重名、记录上传日志及异常处理。适用于SpringBoot框架,涉及文件大小配置调整。

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

上一篇博客写的是vue实现文件上传,这篇写java如何接收。这里实现的是本地接收,还可以接收完以后上传到图片服务器或者做转发,这需要看自己公司的业务了,但是无论如何我们都需要把图片的路径记录下来存到库里,这才是正常的逻辑。。。但是我上家公司居然让我把PDF的文件的流存到库里,还一本正经的告诉我,我们的库十几个T .-__-.。这里的业务逻辑我没写,看官们可以在上传成功之后将路径存起来即可。

 private Logger logger = Logger.getLogger(this.getClass());  // 日志,不需要可以去掉
    //上传服务器的地址
    @RequestMapping("/fileUploadLocal")
    public ResponseBody fileUploadLocal(MultipartFile uploadFile)throws Exception{
        try {
            String basePath = null;  // 文件上传位置
            //1.获取文件上传的位置
//        String basePath = request.getSession().getServletContext().getRealPath("/upload");
            URL uploadUrl = this.getClass().getResource("/upload");
            if(uploadUrl!=null){
                basePath = uploadUrl.getPath();
            }else {
                basePath = this.getClass().getResource("/").getPath()+"upload";
            }
            System.out.println(basePath);
            //2.为了防止一个目录下文件过多,创建一个二级目录
            String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
            //3.判断文件是否存在
            File file = new File(basePath,datePath);
            if(!file.exists()){
                file.mkdirs();
            }
            //4.取出文件名
            System.out.println("getName:" +uploadFile.getName());
            System.out.println("getOriginalFilename:"+uploadFile.getOriginalFilename());
            String fileName = uploadFile.getOriginalFilename();
            //为了防止文件重名,随机化文件名
            String uuid = UUID.randomUUID().toString().replace("-","").toUpperCase();
            fileName = uuid+"_"+fileName;
            //写文件
            uploadFile.transferTo(new File(file, fileName));
        } catch (Exception sb){
            logger.info(sb.getMessage());   // 记录日志,不需要可以去掉
            throw new SbException("文件上传出现异常!");   // 自定义的异常类,可以换成运行时异常new RuntimeException("错误信息");
        }
        return DyTool.responseReturn(StatusEnum.UPLOADSUCCESS);  // 响应回页面的消息
    }

因为我用的是SpringBoot框架,框架已经自定义了一些默认配置,比如上传文件的大小,默认限制了1M。我们上传的文件有点大的话就需要进行更改默认配置,下一篇博文就是写如何更改默认配置
如果发现什么问题请留言,毕竟代码都是人写的难免会出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值