踩坑记录——idea中配置springmvc上传文件路径和访问路径问题

先粘贴一段文件上传控制器代码

@RequestMapping("fileupload")
    public String uploadFile(MultipartFile file, HttpServletRequest req) throws IOException {
        // 判断文件是否为空,空则返回失败页面
        if (file.isEmpty()) {
            return "failed";
        }
        // 获取文件存储路径(绝对路径)
        String path = req.getServletContext().getRealPath("/upload");
        //判断目录是否存在,若不存在,则创建
        File dir = new File(path);
        if (!dir.exists()){
            dir.mkdirs();
        }
        // 获取原文件名
        String fileName = file.getOriginalFilename();
        String uuid = UUID.randomUUID().toString().replaceAll("-","").toUpperCase();
        fileName = uuid+"_"+fileName;
        // 创建文件实例
        File filePath = new File(path, fileName);
        // 写入文件
        file.transferTo(filePath);
        return "success";
    }

获取上传的文件夹采用了req.getServletContext().getRealPath("/upload");

通过各种实验,该语句只能获取到服务器中项目根目录,加上后边的 "/upload" ,即便是我配置了External Source,指向该路径,但是该语句仍然只是获取服务器中项目根目录下的upload文件路径,并不是我后来配置的External Source文件的真实路径。

1. 尝试用虚拟地址+upload访问req.getServletContext().getRealPath("/upload");获取到的目录下的文件,访问失败。

2. 尝试用主机地址localhost:8080/upload访问,失败。

3. 在编译后的目录中选择upload配置External Source,访问成功。

3. 上传文件到req.getServletContext().getRealPath("/upload")目录,成功。

总结:

1. 编译后的项目根目录下的文件夹名/文件,不能成功访问,需要将该目录配置为External Source;

2. req.getServletContext().getRealPath("/upload"); 该语句只是获取编译后的项目根目录下的upload文件夹路径;

3.External Source配置文件访问目录和上传目录不相关.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值