Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – NodeJS如何从aws s3文件桶下载文件到磁盘?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的目标:

显示一个对话框,提示用户保存从aws下载的文件.

我的问题:

我正在使用awssum-amazon-s3来创建一个下载流.但是,我只是将文件保存到我的服务器或将其传输到命令行…从我的代码可以看出,我最后一次尝试手动设置失败的内容配置头.我已经设置了头文件,不能使用res.download()

如何实现我的目标?

我的节点代码

app.post('/dls/:dlKey',function(req,res,next){
        // download the file via aws s3 here
        var dlKey = req.param('dlKey');

        Dl.findOne({key:dlKey},function(err,dl){
            if (err) return next(err);
            var files = dl.dlFile;

            var options = {
                BucketName    : 'xxxx',ObjectName    : files,};

            s3.GetObject(options,{ stream : true },data) {
                // stream this file to stdout
                fmt.sep();
                data.Headers['Content-Disposition'] = 'attachment';
                console.log(data.Headers);
                data.Stream.pipe(fs.createWriteStream('test.pdf'));
                data.Stream.on('end',function() {
                    console.log('File Downloaded!');
                });
            });
        });

        res.end('successful Download Post!');
    });

我的代码为角:

$scope.dlComplete = function (dl) {
        $scope.procDownload = true;
        $http({
            method: 'POST',url: '/dls/' + dl.dlKey
        }).success(function(data/*,status,headers,config*/) {
            console.log(data);
            $LOCATIOn.path('/#!/success');
        }).error(function(/*data,config*/) {
            console.log('File download Failed!');
        });
    };

这个代码的目的是让用户使用生成的密钥下载一次文件.

解决方法

这是使用最新版本的aws-sdk的流式传输的整个代码

var express = require('express');
var app = express();
var fs = require('fs');

app.get('/',next){
    res.send('You did not say the magic word');
});


app.get('/s3Proxy',next){
    // download the file via aws s3 here
    var fileKey = req.querY['fileKey'];

    console.log('Trying to download file',fileKey);
    var AWS = require('aws-sdk');
    AWs.config.update(
      {
        accessKeyId: "....",secretAccessKey: "...",region: 'ap-southeast-1'
      }
    );
    var s3 = new AWs.S3();
    var options = {
        Bucket    : '/bucket-url',Key    : fileKey,};

    res.attachment(fileKey);
    var fileStream = s3.getObject(options).createReadStream();
    fileStream.pipe(res);
});

var server = app.listen(3000,function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log('S3 Proxy app listening at http://%s:%s',host,port);
});

大佬总结

以上是大佬教程为你收集整理的node.js – NodeJS如何从aws s3文件桶下载文件到磁盘?全部内容,希望文章能够帮你解决node.js – NodeJS如何从aws s3文件桶下载文件到磁盘?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。