【问题标题】:Storing and downloading pdf files from mongoDB using Node.js使用 Node.js 从 mongoDB 存储和下载 pdf 文件
【发布时间】:2022-08-15 02:53:35
【问题描述】:

我正在使用 NodeJs、猫鼬、ejs

我希望用户能够将他的 CV(小于 16 MB)上传为 pdf 文件,然后管理员能够下载 pdf 或在网站上查看 CV。

我做了上传部分,我将这样的简历存储在数据库中(这可能是错误的方式):

cv: Object {
fileName: \"Test Results All in testing-homework.pdf\"
filePath: \"cvs\\1650985306448-.pdf\"
fileType: \"application/pdf\"
}

pdf文件上传后保存在\"/cvs\"文件夹中。

我正在寻找一种能够从数据库下载/查看 pdf 文件的方法。

    标签: node.js mongodb file-upload


    【解决方案1】:

    我会建议你使用来自 mongodb 的 GridFs。 参考:https://www.mongodb.com/docs/drivers/node/current/fundamentals/gridfs/

    从数据库下载

    bucket.openDownloadStreamByName('your_file_name').
         pipe(fs.createWriteStream('./desired_name_of_output_file'));
    

    在 MongoDB 中使用 GridFs 的一些基本上传和下载操作

    const mongoUrl='mongodb://127.0.0.1:27017/db'
    const mongodb = require('mongodb');
    const fs = require('node:fs'); 
    
    const client = new mongodb.MongoClient(mongoUrl)
    const db = client.db('db');
    

    使用用户定义的名称创建存储桶

    const bucket = new mongodb.GridFSBucket(db,{bucketName:'name_of_bucket' });
    

    上传到数据库

    fs.createReadStream('./filename.pdf').
         pipe(bucket.openUploadStream('filename', {
             chunkSizeBytes: 1048576,
             metadata: { field: 'filename', value: 'myValue' }
         }))
    

    寻找

    const cursor = bucket.find({});
    cursor.forEach(doc => console.log(doc));
    

    删除

    cursor.forEach(doc => bucket.delete(doc._id));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      相关资源
      最近更新 更多