介绍
mongo-gridfs-storage 是一个基于 Node.js 的 npm 包,用于将文件存储到 MongoDB 的 GridFS 中。使用该包可以方便地实现文件上传和下载功能,并且支持大文件存储。
安装
使用 npm 进行安装:
npm install mongo-gridfs-storage
使用
连接数据库
在使用 mongo-gridfs-storage 之前,需要先连接到 MongoDB 数据库。可以使用 mongoose 进行连接:
const mongoose = require('mongoose') const mongoURI = 'mongodb://localhost:27017/mydb' mongoose.connect(mongoURI, { useNewUrlParser: true, useUnifiedTopology: true })
创建 GridFS 存储实例
使用 mongo-gridfs-storage 创建 GridFS 存储实例,示例如下:
-- -------------------- ---- ------- ----- ------------- - ------------------------------- ----- ------- - --- --------------- ---- --------- ----- ----- ----- -- - ------ - --------- ----------------- - - --
在上述代码中,url 参数指定了 MongoDB 数据库的连接地址,file 参数指定了文件存储时的默认属性,可以在实际使用中根据需求进行修改。
上传文件
使用 GridFS 存储实例的 .createWriteStream
方法可以实现文件上传功能。示例如下:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ------ - ---------------- ---------------------- ----- ---- -- - ----- ------ - --------------------------- --------- --------------------- -- ----- ---------- - ---------------------------------- ----------------------- ------------------- ------ -- - -- -------- ---------------------- ------- -------- -- -- --
在上述代码中,req.file
是通过 multer 中间件上传的文件对象。使用 fs 模块创建读取流并将其传入 createWriteStream 方法中,最终返回的 upload 对象可以监听 finish 事件,以得到上传后的文件对象。
下载文件
使用 GridFS 存储实例的 .createReadStream
方法可以实现文件下载功能。示例如下:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ------ - ---------------- --------------------------- ----- ---- -- - ----- -------- - -------------------------- ---- -------------------------------------- -- ------------------ --
在上述代码中,req.params.id 是要下载的文件的 ID,通过传入查询条件,使用 createReadStream 方法获取读取流,再将其通过管道传输到响应对象中,以实现文件下载功能。
总结
通过本文的介绍,我们学习了如何使用 mongo-gridfs-storage 包实现基于 MongoDB 的文件上传和下载。在实际应用中,我们可以通过对参数进行修改,灵活运用该包的功能,实现更加复杂的文件存储需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/158683