Tauri、Vue3应用中解析本地二进制图像文件的解决方案
本文探讨在使用Tauri、Vue3和markdown-it构建的Markdown解析器中,由于安全策略限制导致本地图片无法显示的问题,并提供最终解决方案。
问题:该工具使用v-html
渲染Markdown文件中的图片(相对路径)。开发模式下图片正常显示,但构建后,即使路径转换为绝对路径(例如:https://tauri.localhost/img/xxx.png
),浏览器安全策略仍阻止前端访问本地图片。
尝试:修改tauri.conf.json
中的CSP策略(例如将img-src
设置为*
)无效。尝试了两种方案:1. 使用Tauri的fs
API读取本地文件;2. 在Rust后端读取二进制文件,将数据传递给前端,使用Blob对象解析。两种方案均导致图片显示损坏或无法加载,怀疑问题在于Vue.js的图片解析或数据格式。
初始前端代码尝试将二进制数据转换为字符串,再使用window.btoa
编码为base64,最后设置img
元素的src
属性。
最终解决方案:使用Blob对象和URL.createObjectURL
方法生成URL。代码如下:
let img_path = "E:/myProjects2/tauri_vue/mdren/img/a-1-01.png"; const contents = await readBinaryFile(img_path); // 假设readBinaryFile函数已定义 let blob = new Blob([contents], { type: "image/png" }); async function reloadImg() { let img_element = document.querySelectorAll("#img-to-remove"); img_element.forEach(async (element) => { element.src = URL.createObjectURL(blob); }); }
原因分析:之前的方案失败可能由于CSP配置错误或Rust后端数据传递问题。使用Blob对象和URL.createObjectURL
直接创建图片URL,绕过了安全策略限制,成功解决了图片显示问题。
以上是Tauri Vue3应用中:如何正确解析本地二进制图像文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

vue中props可以传递函数;vue中可以将字符串、数组、数字和对象作为props传递,props主要用于组件的传值,目的为了接收外面传过来的数据,语法为“export default {methods: {myFunction() {// ...}}};”。

本篇文章带大家聊聊vue指令中的修饰符,对比一下vue中的指令修饰符和dom事件中的event对象,介绍一下常用的事件修饰符,希望对大家有所帮助!

如何覆盖组件库样式?下面本篇文章给大家介绍一下React和Vue项目中优雅地覆盖组件库样式的方法,希望对大家有所帮助!

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。