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

Angularjs 将node.js中的文件下载到用户指定的路径,angularjs,node.js,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.

我正在尝试使用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);     
    });
});  
在这里,我手动提供下载目录,因此它正在下载到该目录

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

将代码下载到服务器中,然后该文件应下载到该特定位置


如果下载文件夹位于主目录中(并且您希望在下载文件夹中下载),那么您可以使用

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的路径模块生成路径。

您无法控制用户希望下载文件的路径。您可以在服务器上创建writestream,当然它可以在本地工作。但用户使用浏览器设置设置路径(例如,在Chrome中:设置下载文件)。如何显示下载状态。我使用angular.js作为前端。您能告诉我“process.env.HOME | | process.env.USERPROFILE”的确切路径吗返回?@PriyankaPawar您不需要process.env.HOME或process.env.USERPROFILE。您可以手动指定路径。HOME和USERPROFILE只是环境变量。您可以通过在linux上运行“echo$HOME”或在windows上运行“echo%USERPROFILE%”来检查这些变量的值。这些变量通常设置为用户的主路径;linux的情况下为“/Users/xyz”,windows的情况下为“C:\Users\xyz”。是的,这些变量在本地主机上运行良好,但我问它从实例返回什么?它将返回环境变量的任何值。如果HOME和USERPROFILE都没有设置为任何值,那么您将得到一个错误;因为您正在将未定义的传递给path.join函数。