当前位置: 首页 > news >正文

Qt6.8.2中WebAssembly沙盒环境中预加载文件

在WebAssembly的沙盒环境中是不允许直接按照绝对路径访问文件的。

WebAssembly作为Web技术的一部分,应该也遵循同源策略,直接访问绝对路径可能会破坏同源策略,导致不同来源的代码能够随意访问彼此的文件资源,引发安全漏洞。

正确的使用方式:

1:在pro中将本地需要加载的文件预加载到虚拟路径中。

假设本地文件的路径结构如下所示

--preload-file <本地路径>@<虚拟路径>

代码设置:

#虚拟沙盒环境
QMAKE_LFLAGS += --preload-file $$PWD/resource/data@/working

<本地路径> ($$PWD/resource/data)

表示 项目本地目录$$PWD 是 qmake 变量,代表当前项目路径)下的 resource/data 文件夹。
例如:/home/project/resource/data

<虚拟路径> (/working)
指定文件在 WebAssembly 虚拟文件系统 中的挂载位置。
例如:/working/data/file.txt

 使用这种方式就可以将本地文件夹映射到虚拟文件系统,在程序中直接访问虚拟文件夹中的内容就行了。

2:访问虚拟文件,遍历虚拟文件夹内容

//展示虚拟文件夹列表信息
QDir dir("/working");
QStringList listVirtual = dir.entryList(QDir::NoDotAndDotDot | QDir::AllEntries);
listVirtual.sort(); // 按字母顺序排序
// 遍历并分类显示
for (const QString &entry : listVirtual)
{QFileInfo info(dir.absoluteFilePath(entry));if (info.isDir()) {qDebug() << "[DIR] " << entry;} else if (info.isFile()){qDebug() << "[FILE]" << entry << info.size() << "bytes";ui->listVirtual->addItem(entry);} else if (info.isSymLink()) {qDebug() << "[LINK]" << entry << "->" << info.symLinkTarget();}
}

使用这种方式就可以访问本地文件了。

我是糯诺诺米团,一名C++开发程序媛~

http://www.xdnf.cn/news/193393.html

相关文章:

  • Cursor
  • 可视化图解算法:合并二叉树
  • JVM 生产环境问题定位与解决实战(八):实战篇——正则表达式回溯引发的CPU 100%
  • C++20 小语法
  • 【KWDB 创作者计划】_KWDB产品技术解读
  • 【线性规划】对偶问题的实际意义与重要性质 学习笔记
  • 鼠标获取坐标 vs 相机获取坐标
  • SpringBoot应用原生或docker镜像容器集成Skywalking
  • 数据要素与居民就业的深层联结 数字化转型下的劳动力市场变革
  • 项目上线流程梳理(Linux宝塔面板)
  • 基于Springboot + vue + 爬虫实现的高考志愿智能推荐系统
  • Web基础与HTTP协议
  • 第二章、Isaaclab强化学习包装器(1)
  • 研究:大模型输出一致性:确定性与随机性的场景化平衡
  • 【Android】SettingsPreferenceService
  • (002)Excel 使用图表,统计
  • conda和bash主环境的清理
  • 【优秀三方库研读】【性能优化点滴】odygrd/quill 解决伪共享
  • AcWing 885:求组合数 I ← 杨辉三角
  • vs2022解决 此项目需要MFC库。从visual studio安装程序(单个组件选项卡)为正在使用的任何工具和体系结构安装他们问题
  • JQ6500语音模块详解(STM32)
  • C++ 之 【模拟实现 list(节点、迭代器、常见接口)】(将三个模板放在同一个命名空间就实现 list 啦)
  • 电子电器架构 -- 汽车零部件DV试验与PV试验的定义及关键差异
  • [ 问题解决 ] sqlite3.ProgrammingError: SQLite objects created in a thread can ...
  • mybatis的xml ${item}总是更新失败
  • npm init、换源问题踩坑
  • 【Python数据驱动决策】数据分析与可视化全流程实战指南
  • 论文导读 - 基于边缘计算、集成学习与传感器集群的便携式电子鼻系统
  • Vue基础(7)_计算属性
  • C++核心编程:类与对象全面解析