Not allowed to load local resource问题解决方案

遇到问题时间:2024-06-09
遇到该问题的原因在做大事件项目的时,完善文件上传接口(文章封面图片和头像),由于资金不足(不想买阿里云哈哈哈哈哈哈)所以想着把上传后的文件存储到本地的磁盘当中,

以下是后端文件上传的代码

@Service
public class UploadServiceImpl implements UploadService {
    @Override
   public Result upload(MultipartFile file){
        //获取文件名
        String originalFilename = file.getOriginalFilename();
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        //通过UUID为文件添加唯一名称,防止重名导致文件覆盖
        String newFileName =UUID.randomUUID().toString().replace("-","")+suffix;
        try{

           file.transferTo(new File("D:\\trash\\uploadImg\\"+newFileName));
            return Result.success(""D:\\trash\\uploadImg\\"+newFileName");
       }
       catch (IOException e){
           e.printStackTrace();
       }
     return Result.success();
    }

}

在前端文件上传成功之后,发现上传后的照片并不会在前端回显,甚是苦恼。

在打开浏览器开发者工具后发现Not allowed to load local resource的异常,由于之前从未见过如此异常,所以在网上搜索了一下,原来产生这个异常的原因是为了安全问题浏览器不允许直接访问本地内存。

解决方案:

  后端提供了映射地址的方式,使本地的文件可以通过后端的url来映射访问

代码:

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
 
    @Value("${file.upload}")//在配置文件中定义的文件上传到本地磁盘的地址
    private String fileUpload;//定义的后端映射地址 此处纬 /file/**
    @Value("${file.path}")
    private String filePath;


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(filePath).addResourceLocations("file:///" + fileUpload);
    }
}

在编写完此配置文件之后,向前端返回一个映射的url,也就是:http://localhost:端口号/filePath/文件名字就可以完成图片的回显

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值