繁体   English   中英

如何在NodeJS Web应用程序中存储和访问大文件

[英]How to Store and Access Large Files in NodeJS Web Application

如果我想允许用户在帖子中上传视频,那么最好的存储方式是什么,以便以后可以访问? 我目前仅使用INSERT查询将其上传到PostGres SQL数据库字段,但是它非常慢。

是否有另一种方法或最佳实践来存储像这样的大文件并快速有效地访问它?

var video = videoFile ? "'\\x" + videoFile.buffer.toString('hex') + "'" : "NULL";
let insertQuery = "INSERT INTO posts (video) VALUES(" + video + ") RETURNING *";

上面是我现在用来将文件插入数据库的代码。

不要将整个视频存储到数据库中。 下面的两个步骤可能是一个更好的解决方案:

1)将视频文件上传到云存储。 请参阅Google Cloud StrageAmazon S3 还有许多其他选择。 去自己做一些比较。

2)您将具有链接或ID(或S3中的键)来访问文件。 将所有这些链接或ID存储到数据库中。 请查看此GCS文档S3问题

另外,利用非阻塞I / O ,这是node.js的优点。 在您的情况下,您可以尝试执行以下操作:

let insertQuery;
let promisesList=[];

for(let vid of videoIds){
    insertQuery = "INSERT INTO posts (videoId) VALUES($1) RETURNING *";
    promisesList.push(client.query(query,[vid]));
}
await Promise.all();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM