读取文件到磁盘错误,“setHeader()需要名称和值”

时间:2015-11-06 12:55:14

标签: javascript node.js file-upload http-headers mean-stack

尝试允许用户将图像文件上传到MEAN Stack应用程序中的Node.js服务器。我正在使用ng-file-upload作为客户端角度指令。这似乎工作得很好。我将图像传递给服务器时遇到错误。

我使用API​​路由来处理服务器端的工作。服务器将负责使用node-multiparty模块将文件保存到磁盘。它似乎命中了路线但是当它试图发出一个关闭事件时我得到了错误。 抛出新的错误(setHeader()需要''“name”和“value”。

我想要的文件位于我的临时文件夹中,但它没有保存到我服务器上的目标目录中,而且我应该在保存文件后得到标题错误。所以我需要停止错误并将fs.rename()文件保存到目标图像目录。

这是破解的代码。

文件api.js

// router to save images
router.route('/img/upload')

.post(function (req, res) {
console.log("image upload hits the router")

var options = {};
var count = 0;
var form = new multiparty.Form(options);

//save file to disk
form.on('file', function (name, file) {
var uploadDirectory = 'img/user/profile/';
var oldPath = file.path;
var newPath = uploadDirectory + file.originalFilename;

fs.rename(oldPath, newPath, function (err) {
if (err) throw err;
console.log('renamed complete');
});
});

// Close emitted after form parsed
form.on('close', function () {
console.log('Upload completed!');
res.setHeader('text/plain'); // Here is the line that gives an error.
res.end('Received ' + count + ' files');
});

// Parse req
form.parse(req);

});

1 个答案:

答案 0 :(得分:0)

所以这就是我为我工作的原因

给我一​​个错误的实际行是setHeaders。看来我需要将名称和值作为以逗号分隔的字符串。这对我来说非常适合。我希望它能节省每个人的编码时间。

// post 
.post(function (req, res) {

var options = {};
var count = 0;
var form = new multiparty.Form(options);

form.on('error', function (err) {
console.log('Error parsing form: ' + err.stack);
});

//save file to disk
form.on('file', function (name, file) {
var uploadDirectory = '/img/user/profile/';
var oldPath = file.path;
var newPath = uploadDirectory + file.originalFilename;

fs.rename(oldPath, newPath, function (err) {
if (err) throw err;
console.log('renamed complete');
});
});

// Close emitted after form parsed
form.on('close', function () {
console.log('Upload completed!');
res.setHeader('Content-Type', 'text/plain');
res.end('Received ' + count + ' files');
});

// Parse req
form.parse(req);

});