J'utilise le package Multer pour le téléchargement. Je dois vérifier le jeton avant de télécharger des images. Il n'y a pas de problème avec .single()
. Mais quand je veux télécharger plus d'une image, il semble qu'il n'y a pas req.body.token
.Accès au Connot à plusieurs personnes lorsque j'envoie plusieurs images
* Vérifier le fonctionnement jeton:
_checkToken = (token) => {
return User.
findOne({'token':token},'_id')
.then((data) => {
if(data) return data._id.toString()
else return 'invalid'
})
}
* Demande de _checkToken():
let userId
checkRequest = (data) => {
return new Promise((resolve,reject)=>{
let token = data.token
if(token){
_checkToken(token).then((auth) => {
if(auth.length==24){
_userId = mongoose.mongo.ObjectID(auth)
resolve('valid')
}
else{
resolve('invalid')
}
}).catch(err => reject('invalid'))
}
})
}
* Multer DiskStorage
var storage = multer.diskStorage({
destination: function (req, file, cb) {
checkRequest(req.body).then((check)=>{
if(check=='valid'){
let newPost = new Post()
newPostId = newPost._id
let dir = `./data/posts/${newPostId}`;
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
cb(null, dir)
}
else return false
})
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
var uploadImages = multer({ storage: storage }).single('image')
* itinéraire
routes.post('/post', (req,res) => {
uploadImages(req,res,(err)=>{
if(err) res.send('error')
else{
if(newPostId){
// ...
let data = {
_id: newCampaignId,
// ...
}
Post.create(data).then((p)=>{
res.send('done')
})
}
}
})
})
Lorsque j'utilise .array('images')
au lieu de .single('image')
, il semble qu'il n'y a pas req.body.token
parce que _checkToken(token)
retours invalid
.
Oh, merci beaucoup. Tout va bien! – user1788781