Здравствуйте!
Есть у меня инпут файлов, и есть кнопка. По клику на кнопку мне нужно(возможно) перекинуть на сервер изображение в виде массива байтов, но я что-то вообще запутался с ajax отправкой и есть у меня какой-то вот такой код
$('#upload-profile-image-btn').on('click', () => {
$.ajax({
url: '@Url.Action("UploadProfileImage", "Account")',
method: 'post',
data: document.getElementById($('#upload-avatar').prop('id')).files[0],
success: (response) => {
alert("Success");
console.log(response);
},
error: (response) => {
alert("Error");
console.log(response);
}
})
});
Но он не работает (логично, хаха)
И так же у меня есть модель данных для отправки на сервер:
public class ChangeProfileImageHttpPostVm
{
public long Id { get; set; }
public byte[] Avatar { get; set; }
}
И тут у меня возникает ещё один вопрос, нужно ли вообще мне конвертировать его в массив байтов перед отправкой на сервер, или можно это сделать непосредственно на сервере? Ну, меня в первую очередь интересует, как отправить на сервер в виде массива байтов, ориентируюсь на
эту статью на метаните по отправке изображений на сервер (И загрузка в БД), но мне не подходит там отправка формой, мне нужно сделать отправку через ajax.
Логично предположить, что если можно отправить массивом байтов с формы, значит так же можно и отправить через ajax, тут и вопрос самого ВОПРОСА (тавтология), как это сделать?
UPD: в интернете искал, но там что-то всё делается через какой-то canvas, с каким я не то. что бы плохо знаком, а вообще его не видел и не знаю что это и с чем его едят. Есть некоторые статьи, но они плохо описывают то, что мне нужно.
Конечно, я буду параллельно смотреть и сам и искать выход (Может для кого-то задача покажется лёгкой), но может и кто-то предложит более лёгкое решение