我试图将图片上传到node.js的表达上传图片到Node.js的使用multer不起作用
- bodyParser需要中间件来处理图像文件,或将回复
令牌取消定义
- 我使用Multer作为中间件,如this所说,req.fil e应该打开一个信息数组,比我可以使用req.file.image.path获取文件路径和其他信息,比我可以将它保存为一个文件。
这是问题所在,我从邮递员上传图片,我只写console.log(req.file)
它显示undefined
。
如果我尝试写req.file.image.path
来获取文件路径,错误的是image undefined
,好像我没有用multer很好,所以req.file
没有保存数据信息,我应该创建一些临时文件夹或者...?
app.js
var express = require('express')
,bodyParser = require('body-parser')
,app = express()
,multer = require('multer')
,binary = require('binary')
,fs = require('fs')
,util= require('util')
,http = require('http')
,multer = require('multer')
,upload = multer({ dest: '/Node/file-upload/uploads/' });
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies.
app.use(bodyParser.json({limit: '5mb'}));
songs = require('./routes/route');
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
app.post('/upload',songs.upload);
route.js
var mongoose = require('mongoose');
var uri = "mongodb://1111:[email protected]:61365/aweitest";
mongoose.connect(uri);
// we're connected!
var db = mongoose.connection.db;
var BSON = require('bson').BSONPure;
var binary = require('binary');
var body = require('body-parser');
var fs = require('fs');
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, '/Node/file-upload/uploads/');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage}).single('image');
db.on('error', console.error.bind(console, 'connection errrrrrrrror:'));
db.once('open', function() {
console.log("mongodb is connected!!");
});
exports.upload = function(req, res) {
upload(req,res,function(err) {
console.log(req.file);
fs.readFile(req.file.image.path, function (err, data){
var dirname = "/Node/file-upload/uploads/";
var newPath = dirname + req.body.filename;
fs.writeFile(newPath, data, function (err) {
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});
});
};
错误
TypeError: Cannot read property 'image' of undefined
at c:\Users\awei\WebstormProjects\untitled\routes\girlshanlder.js:107:28
您可以与我们分享您的html表单吗? – danilodeveloper
我使用邮递员上传一个二进制图像文件,内容类型设置为图像/ jpeg –
尝试将'req.file.image.path'更改为'req.file.path'(位于exports.upload块内)并且创建了'/ Node/file-upload/uploads /'文件夹? – danilodeveloper