Node.js:提取大型存档导致崩溃

编程入门 行业动态 更新时间:2024-10-03 19:20:55

<a href=https://www.elefans.com/category/jswz/34/1771450.html style=Node.js:提取大型存档导致崩溃"/>

Node.js:提取大型存档导致崩溃

我从事一个 React 项目,该项目集成了 Potree 以在在线查看器中显示大型点云。 我被困在管理员应该向服务器上传新点云的部分。

Potree 的点云基本上是一个包含 HTML 文件和嵌套文件夹的文件夹,其中包含点云所需的所有文件。

Potree 的典型点云文件夹结构

测试点云 l testPointCloud.html L 点云 l 测试点云 l hierarchy.bin l 日志.txt l 元数据.json 八叉树.bin

文件 octree.bin 包含实际的点云并且可以非常大(通常为 500 MB 到 1.5 GB

我的想法是管理员将testPointCloud根文件夹压缩并通过专用后台页面上传到服务器。这部分工作正常。

服务器(Node.js 的 Express 框架)通过 API 正确接收存档。但是我无法正确提取存档。 如果我将存档作为 .ZIP 上传,解压将在到达“octree.bin”文件后停止,忽略存档的其他文件。
如果我将档案作为 .TAR 上传,我可以正确提取档案,但在提取过程中,我的 Express 服务器将停止并在提取完成后恢复。

这是我最接近目标的提取代码:

const decompress = require('decompress');

exports.createPointCloud = (req, res, next) => {
    const fileName = req.file.filename.split('.')[0].replace(/[^a-z0-9_.\-\s]/gi, '_').replace(/\s+/g, '_');

    decompress(req.file.path, "potree/" + fileName).then(files => {
        // I add the point cloud to the database here
    });
 };

我尝试使用不同的库来管理档案(例如 adm-zip 或解压缩),但我得到了类似的结果。 阅读一些类似的问题(比如how to read and process large zip files in node-js),我似乎明白我应该使用流功能和管道方法来避免吃掉我服务器的所有 RAM 资源,但我不能'不知道如何使用它。

请注意,我是一个完全业余的开发人员,这是一个个人项目。有可能我在管理点云上传方面完全走错了方向。在这种情况下,谢谢你带我走向正确的方向。

问候;

回答如下:

更多推荐

Node.js:提取大型存档导致崩溃

本文发布于:2024-05-30 16:54:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770717.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Node   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!