springboot上传图片,并返回访问路径

        最近有一个上传图片的需求,我选择的方案是将图片保存到静态资源文件夹,并将访问路径(网址)保存到mysql数据库中。

   1、   图片上传工具类

public class UploadUtils {

    //图片上传位置,静态资源文件夹文件存储路径
    private static final String BASE_PATH = "D:\\platform\\src\\main\\resources\\static\\image\\";

    //访问路径
    //在浏览器上访问该路径可以看到图片,ip和端口号可以根据自身需求设置
    private static final String ACCESS_PATH = "http://localhost:8080/image/";

    /**
     * 图片上传
     * @param file
     * @return 访问图片的网址
     */
    public static String upload(MultipartFile file){

        //获取图片的原始名称
        String fileName = file.getOriginalFilename();
        //生成新名称
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        String newFileName = UUID.randomUUID()+suffixName;

        File dest =new File(BASE_PATH+newFileName);
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        try {
            file.transferTo(dest);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String fileUrl = ACCESS_PATH + newFileName;

        return fileUrl;
    }
}

  2、配置静态资源映射

        做完图片上传之后,根据返回的路径访问不到图片,重启了服务器,再次访问发现竟然可以了,不重启它就不能显示。这是因为对服务器的保护措施导致的,服务器不能对外部暴露真实的资源路径,需要配置虚拟路径映射访问。

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    //此处路径和上面的图片上传位置保持一致 
   registry.addResourceHandler("/image/**").addResourceLocations("file:D:/platform/src/main/resources/static/image/");
    }
}

3、此时访问fileUrl就可以看到图片了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值