SpringBoot上传文件路径问题

问题描述:

在开发一个springboot的项目时,在项目部署的时候遇到一个问题:
就是我将项目导出为jar包,然后用java -jar 运行时,
项目中文件上传的功能无法正常运行,其中获取到存放文件的目录的绝对路径的值为空,文件无法上传

问题解决:

//            使用ResourceUtils  来获取真实路径  确保部署时不会出错
            File path = new File(ResourceUtils.getURL("classpath:").getPath());
            System.out.println(path.getAbsolutePath());
//          如果上传的文件为/static/successImage/content/  如下
            File upload = new File(path.getAbsolutePath(), "static/successImage/content/");
            if (!upload.exists()) upload.mkdirs();
            String uploadPath = upload + "\\";
            file.transferTo(new File( uploadPath+fileName));

配置文件需要加入:


#设置静态资源路径,多个以逗号分隔
resources:
    static-locations: classpath:static/,file:${spring.servlet.multipart.location}

具体项目实战:

控制层:

/**
     * 保存新闻内容中的图片,
     *
     * @param file    新闻内容中的图片
     * @param request
     * @return
     */
    @RequestMapping("/admin/saveContentImg")
    @ResponseBody
    public JSONObject saveImage(@RequestParam("editormd-image-file") MultipartFile file, HttpServletRequest request) {
        JSONObject jsonObject = new JSONObject();
        ResultInfo resultInfo = articleService.saveArticleImage(file, request);
        if (resultInfo.getResultCode() == 0) {
            //图片上传失败的信息码
            jsonObject.put("success", 0);
            //信息
            jsonObject.put("message", "upload error!");
        } else {
            //图片回显地址,即文件存放地址,应为虚拟路径
            jsonObject.put("url", resultInfo.getResultObj());
            //图片上传成功的信息码
            jsonObject.put("success", 1);
            //信息
            jsonObject.put("message", "upload success!");
        }
        return jsonObject;
    }

实现层:

/**
     * 保存照片的路径
     *
     * @param file
     * @param request
     * @return
     */
    @Override
    public ResultInfo saveArticleImage(MultipartFile file, HttpServletRequest request) {
        ResultInfo resultInfo = new ResultInfo();
        try {
            int l = file.getOriginalFilename().lastIndexOf(".");
            String h = file.getOriginalFilename().substring(l + 1);
            String fileName = UUIDUtils.getUUID() + "." + h;
            System.out.println(fileName);
//            使用ResourceUtils  来获取真实路径  确保部署时不会出错
            File path = new File(ResourceUtils.getURL("classpath:").getPath());
            System.out.println(path.getAbsolutePath());
            File upload = new File(path.getAbsolutePath(), "static/successImage/content/");
            if (!upload.exists()) upload.mkdirs();
            String uploadPath = upload + "\\";
            file.transferTo(new File( uploadPath+fileName));
            resultInfo.setResultObj("/static/successImage/content/"+fileName);
            resultInfo.setResultCode(ResultInfo.RESULT_CODE_SUCCESS);
        } catch (Exception e) {
            e.printStackTrace();
            resultInfo.setResultCode(ResultInfo.RESULT_CODE_ERROR);
        }
        return resultInfo;
    }

猜你喜欢

转载自blog.csdn.net/qq_37668945/article/details/88767843