在 Angular 中从 Mongoose 下载文件

Posted

技术标签:

【中文标题】在 Angular 中从 Mongoose 下载文件【英文标题】:Downloading a file from Mongoose in Angular 【发布时间】:2016-04-09 01:13:42 【问题描述】:

我已经成功上传了一个文件并将其存储在我的 MongoDB 中,但现在我希望能够从同一个 mongoDB 下载该文件。在服务器端,我使用 Mongoose 中的 GridFS 模块通过 gfs-read/write-stream 上传和下载。 Mongoose 中的下载代码如下:

app.post('/Download', function (req, res) 
    grid.mongo = mongoose.mongo;
    var gfs = grid(conn.db);
    var readstream = gfs.createReadStream(
        filename: 'Program.cs'
    );
    readstream.pipe(res);
)

到目前为止,我有这个角度:

$scope.Download = function () 
        $http.post(url + "/Download")
        .success(function (res) 
            console.log(res);
        )       
 

console.log 响应显示为here

我想将此内容保存到本地文件系统中的 .cs 文件中,还希望能够提示用户输入下载路径,我该怎么做?

【问题讨论】:

你能在本地下载文件吗? 这就是我想要完成的 :) 所以.. 还没有我只是在我的角度获取文件/文件内容并且不知道如何处理它以使其存储在本地文件 【参考方案1】:

试试下面的代码

app.post('/Download', function (req, res) 

    var filenameId = "";// mention _id value of 'Program.cs'

    var filename = 'Program.cs';

    var _id = new ObjectID(filenameId );

    var gfs = new Grid(conn.db, "yourfile_collection_name");// default value is fs 

    gfs.get(_id, function(err, data)     
        if (err)
          throw err;
        res.setHeader('Content-Disposition','attachment; filename="' + filename + '"');
        res.send(data);
      );
;

【讨论】:

那么我在 Angular 中该怎么做?如何在本地存储文件? 不返回“refferenceError: ObjectID is not defined” 使用 gfs.get(filenameId , function(err, data) 确保 filenameId 具有有效值 现在返回:“ReferenceError: Grid is not defined” 确保遵循 import var Grid = require('mongodb').Grid;

以上是关于在 Angular 中从 Mongoose 下载文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 中从 js 执行空缓存和硬重新加载?

在递归节点函数中从 Mongoose 检索树数据

在 Cypress 测试中从 @angular/cdk 导入任何内容都会破坏 Angular 13 的构建

如何在 Angular 4 中从 chrome.runtime.sendMessage 获取回调?

如何在 Angular 5 中从 Typescript 调用 JavaScript 函数?

在 Angular 中从 Typescript 文件配置 Tailwind 主题