首页 > web前端 > js教程 > 正文

Tauri+Vue3应用中,打包后本地图片无法显示,如何解决?

霞舞
发布: 2025-03-12 10:22:01
原创
755人浏览过

tauri+vue3应用中,打包后本地图片无法显示,如何解决?

Tauri、Vue3及Markdown解析工具中的图片渲染问题及解决方案

在使用Tauri、Vue3和markdown-it构建的Markdown解析器中,开发模式下图片显示正常,但打包后却无法显示。 即使路径已修正为https://tauri.localhost/img/xxx.png,由于安全策略限制,前端仍然无法访问本地图片资源。

尝试修改tauri.conf.json中的CSP配置和tauri.allowlist.fs,允许访问本地文件系统,但问题依然存在。

最初尝试通过Tauri的fs API读取本地二进制图像文件,并使用window.btoa将其转换为Base64字符串,再设置img标签的src属性。然而,无论是后端读取文件传递到前端,还是前端直接使用fs读取,图片都无法显示。

立即学习前端免费学习笔记(深入)”;

为排查问题,创建了一个简化Demo,直接在Vue组件中读取本地图片。使用readBinaryFile读取图片数据,并尝试使用window.btoa转换为Base64,但依然无效。

最终解决方案:放弃window.btoa,直接使用Blob对象。将读取到的二进制数据(Uint8Array)使用new Blob([contents], { type: "image/png" })创建Blob对象,然后使用URL.createObjectURL(blob)生成URL,并赋值给img标签的src属性。 此方法成功解决了图片显示问题。之前Blob方法失败可能源于CSP配置错误或Rust后端数据传递问题。

关键代码片段:

let img_path = "E:/myProjects2/tauri_vue/mdren/img/a-1-01.png";
const contents = await readBinaryFile(img_path);
let blob = new Blob([contents], { type: "image/png" });

async function reloadImg() {
  console.log("function called");
  let img_element = document.querySelectorAll("#img-to-remove");
  console.log(img_element);
  img_element.forEach(async (element) => {
    element.src = URL.createObjectURL(blob);
  });
}
登录后复制

以上就是Tauri+Vue3应用中,打包后本地图片无法显示,如何解决?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号