Я начинающий, когда дело доходит до этой топи c, поэтому, пожалуйста, помогите мне. Я пытаюсь загрузить несколько файлов. Для этого я использовал метод upload.fields. несколько файлов загружаются, когда я делаю это с помощью почтальона, но когда я пытаюсь сделать это с помощью pug, это не так. когда я загружаю первый файл, он работает, но когда я загружаю второй, первый тоже исчезает.
// 1 express код загрузки
exports.uploadPhotos = upload.fields([
{ name: 'abcd', maxCount: 2 },
{ name: 'photos', maxCount: 10 }
])
exports.resizePhotos = catchAsync(async (req, res, next) => {
if (!req.files.photos) return next()
req.body.photos = []
// console.log('req.files>>>', req.files)
await Promise.all(req.files.photos.map(async (file, i) => {
let filename = `tour-${Date.now()}-${i + 1}.jpeg`
await sharp(file.buffer)
.resize(500,500)
.toFormat('jpeg')
.jpeg({ quality: 90 })
.toFile(`public/img/programs/${filename}`)
req.body.photos.push(filename)
})
)
console.log(req.body.photos)
// console.log(req.body)
return next()
})
exports.updateMe = catchAsync(async (req, res, next) => {
let doc = await User.findByIdAndUpdate(req.user._id, req.body, { runValidators: true, new: true })
if (!doc) {
return next(new AppError('No document found with that ID', 404))
}
res.status(200).json({
status: 'success!',
data: { doc }
})
})
2 // шаблон pug для загрузки - здесь user.photos должен быть массивом, верно? когда я делаю user.photos [0], это работает, но во втором случае, если я делаю user.photos [1], это не работает !!! почему?
if user
h1 i am the admin
form.form.form-user-data
.form__group.form__photo-upload
each img, i in user.photos
input.form__upload(type='file', accept= 'image/*' id="photos" name="photos")
img.form__user-photo(src=`/img/programs/${user.photos[0]}`, alt='User photo')
label(for='photos') Choose new photo
.form__group.right
button.btn.btn--small.btn--green Save settings
.line
3 // код переднего конца js (вызов API-интерфейса бэкенда и обработка форм)
let upload = async (data) => {
try {
let url = 'http://localhost:4200/updateMe'
let res = await axios({
method: 'PATCH',
url, data
})
console.log('vayo ni bro')
if (res.data.status === 'success') {
console.log('doneeeeee')
}
} catch (err) {
console.log('vaena ni bro',err)
}
}
if (document.querySelector('.form-user-data')) {
document.querySelector('.form-user-data').addEventListener('submit', e => {
e.preventDefault()
let form = new FormData()
form.append('photos', document.querySelector('#photos').files[0])
console.log(form)
upload(form)
})
}
if (document.querySelector('.form-user-data2')) {
document.querySelector('.form-user-data2').addEventListener('submit', e => {
e.preventDefault()
let form = new FormData()
form.append('photos', document.querySelector('#photos').files[0])
upload(form)
})
}