Java教程

springboot上传照片到自己的服务器上并返回地址可以通过地址来访问

本文主要是介绍springboot上传照片到自己的服务器上并返回地址可以通过地址来访问,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

下面三个静态路径都写在properties文件里,要用到直接注入即可。

file.uploadPath是文件的上传路径
file.visitPath是返回完整的文件映射路径【携带端口号】
file.mapPath是返回映射路径【不带端口号】

上传文件代码实现

Controller层

// 上传图片
    @ApiOperation("上传照片接口")
    @PostMapping("/uploadImg")
    public Result uploadImg(@ApiParam("图片") @RequestParam("file")MultipartFile multipartFile) {
        return Result.success(articleService.uploadImg(multipartFile));
    }

serviceImpl实现类

	/**
	单独拉出来
	*/
	@Value("${file.uploadPath}")
    private String uploadPath;
    @Value("${file.visitPath}")
    private String visitPath;

/**
     * 一二三步是生成文件名
     * 四五六步是生成上传路径
     * 第七步是上传并返回可视路径
     * @param multipartFile
     * @return
     */
    @Override
    public String uploadImg(MultipartFile multipartFile) {
        // 1、获取真实文件名
        String originalFilename = multipartFile.getOriginalFilename();
        // 2、截取图片的后缀 lastIndexOf从后往前找
        String imgSuffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        // 3、生成唯一文件名
        String newFileName = UUID.randomUUID().toString()+imgSuffix;
        // 4、日期目录
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
        String dataPath = dateFormat.format(new Date());
        // 5、指定文件上传后的目录
        File targetPath = new File(uploadPath, dataPath); // 拼接成新目录
        // mkdirs:不存在则创建,mkdir:不存在则返回false
        if(!targetPath.exists()) targetPath.mkdirs(); // 如果目录不存在,则递归创建
        // 6、指定文件上传后的服务器完整路径[包括文件名]
        File TargetFileName = new File(targetPath, newFileName);
        // 7、文件上传到指定目录
        try {
            multipartFile.transferTo(TargetFileName); // 文件上传到指定目录
            String finalFileName = dataPath + "/" + newFileName;
            return visitPath+"/"+finalFileName; // 返回可访问的地址
        } catch (IOException e) {
            e.printStackTrace();
            return "fail";
        }
    }

springboot中springMVC的配置类,可以通过映射路径来访问

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Value("${file.mapPath}")
    private String mapPath;
    @Value("${file.uploadPath}")
    private String uploadPath;

    // springMVC中的方法
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 相当于把后面位置那部分起个别名,外部可以通过别名直接访问,但是直接访问上传路径是不行的
        // registry.addResourceHandler(访问的路径).addResourceLocations(上传的路径);
        // 这个mapPath在本地测试的时候可以用到
        registry.addResourceHandler(mapPath).addResourceLocations("file:"+uploadPath);
    }
}
这篇关于springboot上传照片到自己的服务器上并返回地址可以通过地址来访问的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!