将node.js中的文件下载到用户指定的路径中

时间:2015-06-15 09:41:27

标签: angularjs node.js

我正在尝试使用node.js下载文件,这是我的代码:

var file_url = req.body.filename;
var DOWNLOAD_DIR = './downloads/';
var options = {
    host: url.parse(file_url).host,
    port: 80,
    path: url.parse(file_url).pathname
};
var file_name = url.parse(file_url).pathname.split('/').pop();
var file = fs.createWriteStream(DOWNLOAD_DIR + file_name);  
http.get(options, function (resp) {
    resp.on('data', function (data) {
        file.write(data);
    }).on('end', function () {
        file.end();           
        console.log(file_name + ' downloaded to ' + DOWNLOAD_DIR);     


        delet(file_url);     
    });
});  

这里我手动给DOWNLOAD_DIR,因此它正在下载到那个

目录,因为它本地主机不是问题,但当我上传这个

代码到服务器然后该文件应下载到该特定的

用户的机器,所以如何动态地给路径DOWNLOAD_DIR变量

1 个答案:

答案 0 :(得分:0)

如果“下载”文件夹位于主目录中(并且您要在“下载”文件夹中下载),则可以使用

var path = require('path'); 
var file_url = req.body.filename;       
var DOWNLOAD_DIR = path.join(process.env.HOME || process.env.USERPROFILE, 'downloads/');
var file_name = url.parse(file_url).pathname.split('/').pop();
var file_path = path.join(DOWNLOAD_DIR,file_name);
var file = fs.createWriteStream(file_path); 

PS:在处理路径和文件时,总是使用nodejs的路径模块来生成路径。