浏览器报错:Not allowed to load local resource 原因及解决办法

项目场景:

某程序袁最近在做一个二手交易网站的项目,项目有这样一个需求:将用户上传的商品图片保存在本地,将图片的url存在mysql数据库中,前端通过数据库的url访问图片。
上传图片的部分代码如下:

String fileName=imgFile.getOriginalFilename();//文件名
String filePath="D:\\IdeaProjects\\secondhans\\src\\main\\resources\\static\\images\\product";
//封装上传文件位置的全路径
File targetFile=new File(filePath,fileName);
//把本地文件上传到封装上传文件位置的全路径
imgFile.transferTo(targetFile);

此时上传的图片会被存在项目目录下


问题描述

程序袁在前端访问已经上传过的图片时,发现图片无法访问:
在这里插入图片描述
并且浏览器报错:Not allowed to load local resource
在这里插入图片描述


原因分析:

浏览器出于安全方面的考虑,禁止网页访问本地文件,因为图片是存在项目目录下的,所以无法通过本地的url进行访问。


解决方案:

程序袁在看了很多篇博客后,发现只要配置虚拟路径映射本地路径就ok了,下面提供一种配置虚拟路径的方法:

@Configuration
public class MyConfig implements WebMvcConfigurer {
	/*
	*addResourceHandler:访问映射路径
	*addResourceLocations:资源绝对路径
	*/
	@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/product/**").addResourceLocations("file:D:/secondhansImage/");
    }
}

相应的上传图片的代码也要修改:

String fileName=imgFile.getOriginalFilename();//文件名
String filePath="D:/secondhansImage/";
File targetFile=new File(filePath,fileName);
imgFile.transferTo(targetFile);
product.setImageurl("/product/"+fileName);

小结

即使是简单的项目,也能收获颇多!

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值