vue解决Not allowed to load local resource

2023-11-12

前言

在进行通过本地路径进行加载图片的时候,突然就报了这个问题
Not allowed to load local resource
这个是由于安全性的问题,导致浏览器禁止直接访问本地文件
那么,这边我说一下我具体是怎么解决的吧

问题描述

我的项目是用的vue的vantui框架+springboot
然后我后端给前端的数据是一个路径,具体如下图:
在这里插入图片描述
也就是一个本地文件路径的集合

// 为了防止后续图片失效看不到内容,在这标注其中一条数据
D:\\EXAM_MATERIAL\\NEW-STAFF\\IMAGE\\B-0001\\B-0001 公司简介_01.png

而我在页面中的代码是使用的是

// imagebase64是自定义的变量
<img :src="imgBase64" style="position: relative;width:100%;height:100%"/>

我用了一个自定义的变量直接接收路径显示给它
通过按钮上一页和下一页改变自定义变量的值
如:
以下代码只写成最主要的代码,不包括样式,以及不代表我项目中具体代码

<template>
	<div>
	// 图片显示
		<div>
			<img :src="imgBase64" style="position: relative;width:100%;height:100%"/>
		</div>
		// 按钮控制上一页和下一页
		<div>
			<button @click="lastPage">上一页</button>
			<button @click="nextPage">下一页</button>
		</div>
	<div>
</template>
<script>
// 获取后端数据接口
import { getImageList } from "../xxx"
export default {
	name: "xxx",
	// 自定义属性
	    data() {
        return {
            slideImageList: [], // 接收后端数据
            currentPage: 0, // 当前显示第几张图片
            imgBase64: "", // 显示到图片的信息
        }
    },
    // 方法
    methods: {
    // 获取后端数据方法
    getImage() {
    getImageList ().then(res => {
    	// 接收数据(这里根据自己接口来获取)
		this.slideImageList = res.data.data
		// 设置初始显示图片
		this.imgBase64 = this.slideImageList[0];
	})
    },
            // 上一页
        lastPage() {
            if (this.currentPage !=0) {
                this.currentPage--;
                this.imgBase64 = this.slideImageList[this.currentPage];
            }
        },
        // 下一页
        nextPage() {
            this.currentPage++;
            this.imgBase64 = this.slideImageList[this.currentPage];
        },
	},
	 mounted() {
	 // 加载页面获取数据
        this.getImage();
    },
}
</script>

在这里插入图片描述
然后就导致了这么一个问题出现
在这里插入图片描述

解决步骤

通过上面我们发现,直接将文件路径作为图片显示是不可用的,
于是我对获取后端接口数据作了处理

<script>
// 获取后端数据接口
import { getImageList } from "../xxx"
export default {
	name: "xxx",
	// 自定义属性
	    data() {
        return {
            slideImageList: [], // 接收后端数据
            currentPage: 0, // 当前显示第几张图片
            imgBase64: "", // 显示到图片的信息
        }
    },
    // 方法
    methods: {
    // 获取后端数据方法
    getImage() {
    getImageList ().then(res => {
    	// 接收数据(这里根据自己接口来获取)
		this.slideImageList = res.data.data
		// 定义变量接收处理过的数据
		let urlList = [];
		// 以路径D:\\EXAM_MATERIAL\\NEW-STAFF\\IMAGE\\B-0001\\B-0001 公司简介_01.png为例
		// 遍历数据
		for (let i = 0; i < this.slideImageList.length;i++) {
			// 定义临时变量接收遍历后的每条数据
			let path = this.sildeImageList[i];
			// 定义临时变量截取获取文件名称
			let name = path.substring(path.lastIndexOf("\\") + 1);
			// 定义临时变量接收最终处理后的结果
			let url = path.substring(0, path.lastIndexOf("\\") + 1)
			.replace("D:\\EXAM_MATERIAL", "/EXAM_MATERIAL") + encodeURI(name);
			// 将处理后的结果加入到临时集合
			urlList.push(url);
		}
		// 清空接收的后端数据
		this.slideImageList = [];
		// 接收处理后的结果
		this.slideImageList = urlList;
		// 设置初始显示图片
		this.imgBase64 = this.slideImageList[0];
	})
    },
            // 上一页
        lastPage() {
            if (this.currentPage !=0) {
                this.currentPage--;
                this.imgBase64 = this.slideImageList[this.currentPage];
            }
        },
        // 下一页
        nextPage() {
            this.currentPage++;
            this.imgBase64 = this.slideImageList[this.currentPage];
        },
	},
	 mounted() {
	 // 加载页面获取数据
        this.getImage();
    },
}
</script>

即:

    // 获取后端数据方法
    getImage() {
    getImageList ().then(res => {
    	// 接收数据(这里根据自己接口来获取)
		this.slideImageList = res.data.data
		// 设置初始显示图片
		this.imgBase64 = this.slideImageList[0];
	})
    },

修改为:

    // 获取后端数据方法
    getImage() {
    getImageList ().then(res => {
    	// 接收数据(这里根据自己接口来获取)
		this.slideImageList = res.data.data
		// 定义变量接收处理过的数据
		let urlList = [];
		// 以路径D:\\EXAM_MATERIAL\\NEW-STAFF\\IMAGE\\B-0001\\B-0001 公司简介_01.png为例
		// 遍历数据
		for (let i = 0; i < this.slideImageList.length;i++) {
			// 定义临时变量接收遍历后的每条数据
			let path = this.sildeImageList[i];
			// 定义临时变量截取获取文件名称
			let name = path.substring(path.lastIndexOf("\\") + 1);
			// 定义临时变量接收最终处理后的结果
			let url = path.substring(0, path.lastIndexOf("\\") + 1)
			.replace("D:\\EXAM_MATERIAL", "/EXAM_MATERIAL") + encodeURI(name);
			// 将处理后的结果加入到临时集合
			urlList.push(url);
		}
		// 清空接收的后端数据
		this.slideImageList = [];
		// 接收处理后的数据
		this.slideImageList = urlList;
		// 设置初始显示图片
		this.imgBase64 = this.slideImageList[0];
	})
    },

修改代码后的结果

修改完之后,最终的结果如下:
在这里插入图片描述

结语

以上,为vue解决Not allowed to load local resource的过程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue解决Not allowed to load local resource 的相关文章

随机推荐

  • 如何玩转kvm切换器

    KVM多电脑切换器适用对象涵盖SOHO 小型工作室 族群 中小型企业乃至于大型跨国企业 KVM多电脑切换器对于企业机房或数据中心的空间及信息环境能创造广大的效益 不仅能降低能源消耗 节省机架与机房空间 还能避免多余的键盘 显示器与鼠标所造成
  • linux内核有哪些协议族,Linux内核中PF_KEY协议族的实现.doc

    Linux内核中PF KEY协议族的实现 Linux内核中PF KEY协议族的实现 1 本文档的Copyleft归yfydz所有 使用GPL发布 可以自由拷贝 转载 转载时请保持文档的完整性 严禁用于任何商业用途 msn yfydz no1
  • libvlc —— 攫取 RGB图像 和 PCM音频 数据[C++代码实现]

    在我以前的实际项目中 曾利用 libvlc 去解码音视频媒体数据 如 RTSP 本地文件 等 通过其提供的回调函数接口 攫取 RGB图像 进行图像分析 如 人脸识别 运动检测 等一类的产品应用 除此之外 只要提供适当的 MRL 配合选项参数
  • sm2算法前端处理_超级账本 Fabric 国密算法支持

    区块链高级技术专家群内部讲座系列活动 群内由区块链相关团队或组织的技术专家 学者和负责人等组成 目前仅限邀请加入 分享内容会在 TechFirst 微信公众号进行首发 欢迎关注 嘉宾介绍 刘地军 现就职于中国网安密码国家重点实验室 负责和参
  • poj 1195 Mobile phones

    Problem poj org problem id 1195 vjudge net contest 146952 problem C Meaning 有一个 S S 的正方形区域 两维的下标范围都是是 0 S 1 有 4 种操作 1 0
  • git图形化工具GitKraken的使用——Stash和Pop

    正如两个单词的字面意思一样 stash 贮藏 pop 将准备好的东西突然拿出来 这一节模拟git中的这两个命令 git stash 和 git stash pop 在实际开发中 解决bug是避免不了的 在git中 每个bug都是通过新建一个
  • 2022年9月电子学会C语言等级考试试卷(二级)答案解析

    青少年软件编程 C语言 等级考试试卷 二级 分数 100 题数 5 1 统计误差范围内的数 统计一个整数序列中与指定数字m误差范围小于等于X的数的个数 时间限制 5000 内存限制 65536 输入 输入包含三行 第一行为N 表示整数序列的
  • 分治法和蛮力法MATLAB求最近点对

    主程序 main m clear clc n 20 随机生成20个点 A rand n 2 10 将20个点按横坐标升序排列 A sortrows A 1 蛮力法求随机点的最近点对 mindist x1 x2 Bcloest A 1 n m
  • constraintlayout嵌套_Android开发知识(二十六)强大的约束布局 - ConstraintLayout的用法总结...

    th 0dp android layout height 0dp app layout constraintHeight percent 0 5 app layout constraintHei oid layout height 0dp
  • 中继的框架与介绍

    一 概述 继 Relay 是一种网络设备或服务 用于转发网络数据包或消息 它在计算机网络中起到桥接 转发或中转的作用 将信息从一个地方传递到另一个地方 中继可以用于不同类型的网络 包括局域网 LAN 广域网 WAN 互联网等 它可以在不同网
  • Pycharm配置本地解释器

    由于Pycharm自带解释器 所以默认情况下我们是无法使用本地安装好的第三方库的 这个时候我们需要在Pycharm中配置本地的解释器 1 setting 2 add 3 找到本地的python解释器的路径
  • 超级详细找CALL写CALL教程[转]

    首先我们要知道一点 为什么要找CALL CALL是什么 大家知道易里的子程序吧如何调用子程序的 这里的CALL就是调用子程序的意思 那问了为什么要找他的 答案是 当你些个游戏的外挂用模拟键盘操作的时候 被操作的永远是当前窗口 当窗口切换的时
  • 多元时间序列因果关系分析研究综述

    Granger因果分析基本方法 目录 Granger因果分析基本方法 条件 Granger 因果模型 多元混沌时间序列因果分析 高维时间序列的因果分析 Lasso Granger因果模型 非线性Granger因果模型 Granger因果关系
  • DHCP 理论

    DHCP的基本工作过程 有4个阶段 discover offer request ack nak 抓包 标准地址池 1 地址段 网络号 掩码 2 网关 用于不同网段通信 3 dns DHCP的offer包部分字段 option 1 掩码 o
  • 讯飞星火认知大模型可以内测了

    以ChatGPT为代表的AI产品层出不穷 每天在社交媒体都可以看到AI领域的新成果 写文章 写代码 绘画 各种功能让人大呼神奇 4月24日 讯飞星火认知大模型来了 只需一个指令 懂你所言 答你所问 创你所需 解你所难 学你所教 一旦掌握正确
  • scp传输文件的命令

    scp传输文件的命令 scp传输文件的命令 一 scp常规的使用方式 scp可以进行简单的远程复制文件的功能 它是一个在各个主机之间进行复制或文件传输的一个命令工具 它使用一种同ssh一样的安全机制来进行文件的传输 注意 下面定义的远程计算
  • 云计算day08-Kubernetes_K8s

    文章目录 1 k8s的架构 2 k8s集群的安装 2 1 环境准备 2 2 k8s master上配置 2 3 master节点安装kubernetes 2 4 node节点安装kubernetes 2 5 所有节点配置flannel网络
  • 简单阐述下决策树、回归、SVM、神经网络等算法各自的优缺点?

    正则化算法 Regularization Algorithms 集成算法 Ensemble Algorithms 决策树算法 Decision Tree Algorithm 回归 Regression 人工神经网络 Artificial N
  • 检测浏览器是否开启firebug以及如何避免调试信息带来的脚本错误

    今天发现使用Gmail的时候开启firebug 会给出提示 在已知情况下 除非正确配置 Firebug 否则它会使 Gmail 运行缓慢 解决此问题 隐藏 感叹Gmail真是事无巨细 面面都考虑到了 于是想了解Gmail是如何检测用户是否开
  • vue解决Not allowed to load local resource

    前言 在进行通过本地路径进行加载图片的时候 突然就报了这个问题 Not allowed to load local resource 这个是由于安全性的问题 导致浏览器禁止直接访问本地文件 那么 这边我说一下我具体是怎么解决的吧 问题描述