将图像上传到 Node.js使用 multer 不起作用
Upload images to Node.js using multer doesn't work
我正在尝试将图像上传到节点.js快递
- bodyParser 需要一个中间件来处理图像文件,否则它会回复
令牌取消定义
- 我使用 Multer 作为中间件,正如所说,req.file 应该打孔一个信息数组,比我可以使用 req.file.image.path 来获取文件路径和其他信息,而不是我可以将其保存为文件。
这就是问题所在,我从邮递员上传了一张图片,我只写console.log(req.file)
它显示了undefined
.
如果我尝试编写req.file.image.path
来获取文件路径,错误是image undefined
,似乎我没有很好地使用multer,所以req.file
没有保存数据信息,我应该创建一些临时文件夹来multer还是...?
应用.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);
路线.js
var mongoose = require('mongoose');
var uri = "mongodb://1111:1111@ds061365.mongolab.com: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
您需要在邮递员中发送图像之前设置文件名,如下所示
干杯。
用于在MySQL数据库和文件夹中上传图像的完整代码。
只需定义模块并安装 multer 和 path 并保存即可。
var multer = require('multer');
var path = require('path');
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploadimages')
},
filename: function(req, file, callback) {
callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
})
app.post('/imginsert',multer({
storage: storage,
fileFilter: function(req, file, callback) {
var ext = path.extname(file.originalname)
if (ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg')
{
return callback(res.end('Only images are allowed'), null)
}
callback(null, true)
}
}).single('img'), function(req, res) {
/*img is the name that you define in the html input type="file" name="img" */
var data = {
table_column_name(your database table column field name) :req.file
};
var query = connection.query("Insert into tablename set ?" ,data,function(err, rows)
{
if (err)
throw err;
res.redirect('/blog');
});
console.log(query.sql);
console.log(req.file);
});
相关文章:
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- JS-使用Ajax获取文件名
- 基本D3.js:使用数据键
- Angular Js-使用特定键打印数组
- node.js使用monk从数组中按id获取文档
- Angular.js:使用ng repeat创建2个html容器
- 使用history.js使用多个GET参数
- Node.js使用派生两个子进程,然后两个子进程如何相互交换
- Pdf.js:使用base64文件源而不是url来呈现Pdf文件
- Passport.js:使用主干网访问用户
- 图表.js 2.0 使用货币和千位分隔符格式化 Y 轴
- fabric.js:使用 Image.set() 调整图像大小是否会降低图像质量
- 整页.js使用连续滚动或循环时禁用 moveSectionUp
- 节点.js 使用可写流写入文件时出现 EBADF 错误
- 如何获得pickadate.js使用JAWS屏幕阅读器
- JS使用不同的填充
- 选择2 JS使用Ajax加载远程数据
- 从 Node.JS使用 MailGun 发送 HTML 电子邮件
- 如何让node.js使用CFML风格的#hashed#变量
- 使用主干网.js使用“d”从 ASMX 获取数据