vue 项目中,上传到本地的图片如何实现页面上的访问

前言

网上好多解答鱼目混珠,但是大部分都在划水,贴了大量代码,读完也没得收获。其实问题很简单,只要说出原理就可以了。
vue 不支持常规的文件访问方式,比如通过 file:///D:/opt/upFiles/temp/15618.png的方式,图片在 img 配置 src = file:///D:/opt/upFiles/temp/5618.png 也是无效访问。

解决方案

1、文件上传路径要调整到vue项目的 public 目录中
2、在页面中访问即可:src="/logo.png" 注意前面是不加 public 的,因为public访问默认 / 所以直接在后面拼接路径即可

vue(cli3.0)有两个放置静态资源的目录分别是public和assets。
public放不会变动的文件(相当于vue-cli2.x中的static)
public/ 目录下的文件并不会被Webpack处理:它们会直接被复制到最终的打包目录(默认是dist/static)下。必须使用绝对路径引用这些文件,这个取决于你vue.config.js中publicPath的配置,默认的是/。
assets放可能会变动的文件
assets目录中的文件会被webpack处理解析为模块依赖,只支持相对路径形式。
简单来说就是就是public放别人家js文件(也就是不会变动),assets放自己写js文件(需要改动的文件)

因为想到了 public是访问默认,我们可以通过相对路径去访问 assets 吧,好像是不能。
直接向 public 上传图片肯定是不提倡的,最好还是找个文件服务器吧!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Web应用程序,无法直接通过浏览器访问用户计算机上的本地文件系统。Web应用程序只能在受限的浏览器环境操作。 如果你希望在Vue和Quasar应用程序读取并显示本地PDF文件,你可以使用HTML5的File API来实现。 以下是一个简单的示例,演示如何通过文件选择器选择本地PDF文件,并在Web页面上显示: ```vue <template> <div> <input type="file" accept=".pdf" @change="handleFileChange" /> <div id="pdf-container"></div> </div> </template> <script> export default { methods: { handleFileChange(event) { const file = event.target.files[0]; if (file) { const reader = new FileReader(); reader.onload = (e) => { const pdfData = e.target.result; const pdfContainer = document.getElementById('pdf-container'); pdfContainer.innerHTML = `<embed src="${pdfData}" type="application/pdf" width="100%" height="600px" />`; }; reader.readAsDataURL(file); } }, }, }; </script> ``` 在上述示例,我们绑定了一个文件选择器的`change`事件,并获取所选PDF文件的数据。然后,我们使用`FileReader`对象将文件数据转换为Data URL,并将其分配给`<embed>`标签的`src`属性,以在Web页面上显示PDF文件。 请注意,这种方法仅适用于读取用户选择的本地文件,并在客户端显示。如果你需要将文件上传到服务器并在整个应用程序共享和访问,你需要将文件上传到服务器并使用服务器提供的URL来访问和显示PDF文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值