将文件从NodeJS服务器下载到本地计算机
问题描述:
我想从NodeJS服务器下载一个textFile到以AngularJS作为前端的客户端本地计算机。客户端存储路径位于下载/测试下载中的本地机器上。将文件从NodeJS服务器下载到本地计算机
在我的后端我有:
router.get('/upload', function(req, res){
var data= fs.readFileSync('../uploads/'+ file);
fs.writeFile(??+req.file.filename, file, function(err){
if(err){
return console.log(err);
}
console.log('Saved File: ' + req.file.filename);
})
})
在我的角度:
this.download= function(){
$http.get('/creations/upload').then(function success(response){
console.log(response.data);
}, function error(response){
response.data;
})
}
我联系这个功能的一个按钮。 我必须在nodejs fs.writeFile函数中写入什么路径才能将文件保存到本地计算机/ downloads/testfile?
答
这将帮助你..在这里我使用busboy发布和获取文件。
这是后端代码。只是你必须从前端调用这个API。
'use strict'
var express = require('express');
var router = express.Router();
var fs = require('fs-extra');
//Get file
router.get('/:file', function(req, res, next) {
//this is where your file will be downloaded
var filenamewithpath = '/home/downloads/' + req.params.file;
if (!fs.existsSync(filename)){
res.status(404).json({'message' : 'file not found'})
return;
}
res.download(filename , fileToShow)
});
//Post file
router.post('/', function(req, res, next) {
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
var fstream = fs.createWriteStream('/home/temp/' + filename);
file.pipe(fstream);
fstream.on('close', function() {
res.status(201).json({file: filename});
});
});
});
module.exports = router;
答
如果你知道服务器中的文件的完整路径,你可以把它放在一个html锚标记下载它的权利?
<a href="http://<path to file>">Download</a>