gpt4 book ai didi

node.js - Nodejs 和 Express 中的 Multer 图像上传

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:24 25 4
gpt4 key购买 nike

我已经尝试使用 Multer 上传图像好几天了。这就是我已经走了多远。我尝试了多种方法,但似乎无法使其发挥作用。我不知道如何使用 Multer 在 createUser 函数中按如下所示的格式上传图像。

我的“server.js”文件:

var express = require('express');
var multer = require('multer');
var upload = multer({dest: 'uploads/'});
var router = require('./app/routes');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var session = require('client-sessions');
var DB_URI = "mongodb://localhost:27017/portfolio";
var app = express();
var path = require('path');
var fs = require('fs');
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended:false}));
app.use(express.static(__dirname+ '/public'));
app.use(session({
cookieName: 'session',
secret: 'random_string_goes_here',
duration: 30 * 60 * 1000,
activeDuration: 5 * 60 * 1000,
}));

mongoose.connect(DB_URI);
app.use(router);

app.listen(8080, function(){
console.log("server is listening on port 8080");
})

我的“routes.js”

var express = require('express');
var router = express.Router();
var projectController = require('./controllers/projectController');
var userController = require('./controllers/userController');
router.post('/regUser', userController.createUser);

我的“index.ejs”

<form class="form inv" method="POST" action="/regUser" id="reg_form">
<h3 style="margin-bottom:40px;">Register</h3>
<!-- <input type="file" name="file"/> -->
<input type="text" class="form-control" name="name" placeholder="Name"/>
<input type="text" class="form-control" name="username" placeholder="Username"/>
<input type="text" class="form-control" name="email" placeholder="Email"/>
<input type="password" class="form-control" name="password" placeholder="Password"/>
<input type="file" name="userPhoto"/>
<input type="submit" class="btn btn-default" value="Submit"/>
</form>

我的userController.js

createUser: function(req, res){
//add code to create user AND upload image
}

最佳答案

有两个问题。

首先:您的表单没有设置 enctype 属性。文件提交工作需要 enctype="multipart/form-data"

第二:您需要multer,但您没有使用它。添加这个

app.use(multer({ dest: '/tmp/'}).single('userPhoto'))

(或使用其他方法( see documentation ),例如 .array().fields())

然后您可以在 createUser() 中访问该文件,如下所示:

createUser: function(req, res){
console.log(req.file); // this displays the userPhoto's properties
fs.readFile(req.file.path, function (err, data) {
// do something with the file data
}
}

关于node.js - Nodejs 和 Express 中的 Multer 图像上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com