У меня есть приложение, в котором вы можете сделать карту и загрузить фотографию.Проблема в том, что у меня всегда с этим проблемы, иногда картинка загружается и работает, а иногда нет.Я видел много учебников и примеров, и я не могу найти, где моя ошибка.
ЧАСТЬ ФОРМЫ С ЗАГРУЗКОЙ ФАЙЛА
<span class="event-image picture2">
<img style="height:300px" id="promo-img-upload uploaded-picture" class="promo-img-upload" src="${eventPicture}">
<input id="new-event-picture filename" class="img-upload filename" type="file" name="filename" accept="image/*">
</span>
AJAX CALL
var formData = new FormData($($(this).closest('form'))[0]);
console.log('heeeyyy form', $($(this).closest('form'))[0]) //THIS ONE PRINTS ALL THE FORM
console.log('formData', formData) //THIS RETURNS EMPTY
let offerEdited = function(res) {
let promoId = res['promotion'][0]['id']
$('.hidden-promo-id:last').text(promoId)
$(`#${this_form.attr('id')} .confirmation`).text('Promo Saved')
$('.confirmation').fadeOut(3000)
// image upload
$.ajax({
type: 'POST',
url: `/api/Upload-promo?promoId=${promoId}`,
crossDomain: true,
data: formData,
cache: false,
processData: false,
contentType: false,
enctype: 'multipart/form-data',
mimeType: 'multipart/form-data',
beforeSubmit : function() {
},
success : function(responseText, statusText, xhr, $form) {
$(`#promo${promoNumber}`).find('.promo-img-upload').attr('src', `https://res.cloudinary.com/hn90uqs5e/image/upload/promos/${responseText}`);
},
error: function(response){
console.log('there was an error', response)
}
});
}
ПОЧТОВЫЙ ЗАПРОС
router.post('/Upload-promo', function(req, res) {
let promoId = req.query.promoId
let upload = multer({ storage: cloudinaryPromoStorage }).single('filename')
upload(req, res, function (err) {
let file = req.file
if(file != undefined) {
let fullFileName = file["public_id"]
regex = /(promos\/)(.+)/
let fileName = fullFileName.match(regex)[2]
if (err) {
return res.send("Error: file not uploaded")
}
db.any("UPDATE promotions set event_picture = $1 WHERE id = $2", [fileName, promoId])
.catch(function(err){
console.log(err)
})
return res.send(fileName)
}
})
})