将文件读入磁盘错误,"name and value are required for setHeader()"
Reading file to disk error, "name and value are required for setHeader()"
尝试允许用户将图像文件上传到 MEAN Stack 应用程序中的 Node.js 服务器。我正在为客户端 angular 指令使用 ng-file-upload。这似乎工作得很好。当我将图像传递到服务器时,我 运行 遇到错误。
我使用 API 路由来处理服务器端的工作。服务器将负责使用 node-multiparty 模块将文件保存到磁盘。它似乎命中了路线但是当它试图发出一个关闭事件时我得到了错误。 throw new Error('"name" and "value" are required to setHeader().'
我想要的文件在我的临时文件夹中,但它没有保存到我服务器上的目标目录中,而且我在应该保存文件后收到 header 错误。所以我需要停止错误并将带有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);
});
所以这就是我要为我工作的东西
给我错误的实际行是 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);
});
尝试允许用户将图像文件上传到 MEAN Stack 应用程序中的 Node.js 服务器。我正在为客户端 angular 指令使用 ng-file-upload。这似乎工作得很好。当我将图像传递到服务器时,我 运行 遇到错误。
我使用 API 路由来处理服务器端的工作。服务器将负责使用 node-multiparty 模块将文件保存到磁盘。它似乎命中了路线但是当它试图发出一个关闭事件时我得到了错误。 throw new Error('"name" and "value" are required to setHeader().'
我想要的文件在我的临时文件夹中,但它没有保存到我服务器上的目标目录中,而且我在应该保存文件后收到 header 错误。所以我需要停止错误并将带有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);
});
所以这就是我要为我工作的东西
给我错误的实际行是 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);
});