无法运行node.js服务器在节点中使用express和multer上传文件
Cannot run node.js server for upload file in node using express and multer
我只是一个初学者在node.js我会试着用express做一个网站,这样我就可以在那里上传任何东西。我在本地mac上设置了服务器。
它是我写的代码
server.js
var express = require('express');
var app = express();
var fs = require("fs");
var bodyParser = require('body-parser');
var multers = require('multer');
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multers({ dest: '/public/'}));
app.get('/index.html', function (req, res) {
res.sendFile( __dirname + "/" + "index.html" );
})
app.post('/file_upload', function (req, res) {
console.log(req.files.file.name);
console.log(req.files.file.path);
console.log(req.files.file.type);
var file = __dirname + "/" + req.files.file.name;
fs.readFile( req.files.file.path, function (err, data) {
fs.writeFile(file, data, function (err) {
if( err ){
console.log( err );
}else{
response = {
message:'File uploaded successfully',
filename:req.files.file.name
};
}
console.log( response );
res.end( JSON.stringify( response ) );
});
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
这些是错误信息
节点upload.js/用户/dayatura/文件/节点/node_modules/快递/lib/application.js: 209抛出新的TypeError('app.use()需要中间件函数');^
TypeError: app.use()需要中间件函数在EventEmitter。使用(/用户/dayatura/文件/节点/node_modules/快递/lib/application.js: 209:11)在对象。(/用户/dayatura/文档/节点/upload.js: 5)
模块。_compile (module.js: 570:32)
at Object.Module._extensions. js (module.js:579:10)
模块。负载(module.js: 487:32)
at tryModuleLoad (module.js:446:12)
在Function.Module。
_load (module.js 438:3):at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
谁来帮帮我:)
问题如下:
var multer = require('multer')(({ dest: '/public/'}));
那么你可以这样使用。
app.post('/upload', multer.single('image'), function(req, res,next){
//Handle image content here.
console.log(req.file); //to access file
});
multer的用法如下:
var express = require('express')
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
var app = express()
app.post('/profile', upload.single('avatar'), function (req, res, next) {
// req.file is the `avatar` file
// req.body will hold the text fields, if there were any
})
app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) {
// req.files is array of `photos` files
// req.body will contain the text fields, if there were any
})
关于如何使用多个方法的文档:https://github.com/expressjs/multer#usage
我刚刚研究了以上链接中的multer
示例。
Js
var express = require('express');
var app = express();
var fs = require("fs");
var multers = require('multer');
var upload = multers({ dest: '/public/'});
app.get('/index.html', function (req, res) {
res.sendFile( __dirname + "/" + "index.html" );
})
app.post('/file_upload', upload.array('avatar'), function (req, res) {
for (var i = 0, len = req.files.length; i < len; i++) {
var mainFile = req.files[i];
var file = __dirname + "/" + mainFile.name;
fs.readFile( mainFile.path, function (err, data) {
fs.writeFile(file, data, function (err) {
if( err ){
console.log( err );
}else{
response = {
message :'File uploaded successfully',
filename: mainFile.name
};
}
console.log( response );
res.end( JSON.stringify( response ) );
});
});
}
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
这是使用multer上传文件的完整代码:
var multer = require('multer')
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/app/product') /* here you define destination of uploaded files*/
},
filename: function (req, file, cb) {
var ext=file.originalname.split(".")
cb(null, Date.now() +'.'+ext[1]) /* here you set extensions of files when uploaded */
}
})
var upload = multer({ storage: storage });
/* upload.any() method upload any files */
app.post('/backend/product/edit/:id',upload.any(),function (req, res) {
/* req.files are all files that uploaded to server */
/* you can see them use res.json(req.files) */
})
- 使用Express捕获参数
- 从模块内部访问Express装载路径
- 在Nodejs中Express输入DEBUG=app时权限被拒绝/bin
- 如何使用Node/Express显示有关特定错误的自定义html页面
- 发送json对象或使用express路由呈现视图
- renderReact/Rect Router+Node/Express.js的服务器端/同构渲染中未定义renderP
- 为什么不't Express呈现我的React应用程序
- Express.js和multer:如何知道文件何时全部上传
- 由具有 multer 中间件的 Express 服务器接收的帖子数据将被截断
- 使用Multer和Express上传图像
- Express 4 Multer / req.body 和 res.json 未定义
- Express Multer 文件上传 req.body 和 req.file 未定义
- 单独文件中的Express中间件(multer)
- 无法运行node.js服务器在节点中使用express和multer上传文件
- Express.js / Multer.在onFileUploadComplete完成之前发送的响应
- 我不能用multer和express上传图片
- 使用multer在node.js(express)中保留上传后的图像文件名和扩展名
- 使用fetch、multer、express将blob数据发送到节点
- 如何使用Multer验证Express中上传的文件大小
- 上传文件到文件夹在node-express网站使用multer与mongodb