我无法在我的 put 请求中访问 req.file。我正在尝试将表单中的图像与其他输入一起上传到 MongoDB 中的集合。除了上传图片外,我可以更改集合中的变量。尝试了不同的示例,但无法使其工作。已尝试使用 multer 创建上传变量的不同变体,但我无法使其工作。
这就是我在 ejs 文件中的内容:
<form action="/profile/edit?_method=PUT" method="POST">
<h5 class="grey-text text-darken-3">Change your profile:</h5>
<div class="input-field">
<label htmlFor="firstName">Firstname:</label>
<input type="text" id='firstName' name="firstName" value="<%= user.firstName %>" required/>
</div>
<div class="input-field">
<label htmlFor="lastName">Lastname: </label>
<input type="text" id='lastName' name="lastName" value="<%= user.lastName %>"" required/>
</div>
<label htmlFor="gender">Gender:</label>
<% let def = ""; let m = ""; let w = ""; let o= "";
if(user.gender == "Male"){m="selected";}
else if(user.gender== "Female"){w="selected";}
else if(user.gender== "Other"){o="selected";}
else{def="selected";}
%>
<div class="input-field col s12">
<select id="gender" name="gender" value="Women">
<option value="" disabled <%= def %> >Choose your option</option>
<option value="Male" <%= m %> >Male</option>
<option value="Female" <%= w %>>Female</option>
<option value="Other" <%= o %>>Other</option>
</select>
</div>
<% var theDate = "2015-08-09";
console.log(theDate);
console.log(user);
if(user.birthdate != ""){
theDate= user.birthdate;
console.log(theDate);
}
console.log("THEDATE: ");
console.log(theDate);
%>
<div class="input-field">
<label htmlFor="birthdate">Birthday</label>
<input type="date" data-date="" id="birthdate" name="birthdate" data-date-format="DD MMMM YYYY" value="<%= theDate %>" onChange={this.handleChange}/>
</div>
<label for="about">About me:</label>
<textarea id="about" name="about" ><%= user.about %></textarea>
<div>
<label>Cover</label>
<input type="file" name="profilepicture" id="profilepicture" value=null>
</div>
<input type="hidden" name="id" value= "<%= user._id %>"/>
<div class="input-field">
<button class="btn pink lighten-1">Change Profile</button>
</div>
</form>
这是我的路由器文件:
const express= require('express');
const router= express.Router();
const profileController = require('../controllers/profileController');
var multer = require("multer")
var upload = multer({ dest: '/edit' });
router.get('/', profileController.profile_my);
router.get('/edit', profileController.profile_edit_get);
router.put('/edit', upload.single('profilepicture'), profileController.profile_edit_put);
这是在我的控制器文件中:
const profile_edit_put = (req,res) =>{
console.log(req.file);
User.findByIdAndUpdate({_id: req.body.id}, {
$set:{
firstName: req.body.firstName,
lastName: req.body.lastName,
gender: req.body.gender,
about: req.body.about,
birthdate: req.body.birthdate,
}
})
.then(result =>{
console.log(" redirect app");
res.redirect('/profile');
})
.catch(err=>{
console.log(err);
});
}
不胜感激,我感到有些失落。提前致谢。