2015-06-15 48 views
0

我試圖使用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所以它下載到

目錄,因爲它是本地主機不是問題,但是當我上傳這個

代碼到服務器,然後將文件應該被下載到特定

用戶併購achine,所以如何給動態路徑DOWNLOAD_DIR可變

+0

您無法控制用戶更喜歡下載文件的路徑。你在服務器上創建writestream,當然它在本地工作。但是用戶使用瀏覽器設置來設置路徑(在Chrome中爲f.e.:Settings-Downloaded files)。 –

回答

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的路徑模塊來生成路徑。

+0

感謝您的工作 –

+0

如何顯示有關下載的狀態。我正在使用angular.js作爲前端 –

+0

您能告訴我你的情況什麼確切路徑「process.env.HOME || process.env.USERPROFILE」返回? –

相關問題