Как через ajax передать изображение в виде массива байтов на сервер?

Работаю с asp.net и мне нужно передать изображение как массив байтов на сервер, т.е. модель имеет следующий вид:

public long Id { get; set; }
public byte[] Avatar { get; set; }

Далее я пытаюсь передать изображение в виде массива байтов, но не получается. Последние попытки закончились этим кодом:

let formData = new FormData();
    let file = document.getElementById($('#upload-avatar').prop('id')).files[0];
    formData.append("Avatar", file);
    formData.append("Id", @Model.User.Id);

    console.log(formData.get("Avatar"))
    console.log(formData.get("Id"))
    

    $.ajax({
        url: '@Url.Action("UploadProfileImage", "Account")',
        method: 'post',
        data: formData,
        contentType: 'false',
        processData: false,
        success: (response) => {
            alert("Success");
            console.log(response);
        },
        error: (response) => {
            alert("Error");
            console.log(response);
        }
    })
    .done(() => {
        alert("Done")
        formData.delete("Avatar")
        formData.delete("Id")
    })
    .fail(() => {
        alert("Fail")
        formData.delete("Avatar")
        formData.delete("Id")
    })

Но в таком случае я не сервере получаю Avatar как null, но Id "доставляется" нормально

На сколько я понял, мне нужно как-то адекватно конвертировать изображение в массив байтов перед отправкой, но я не могу понять, как это мне сделать.

UPD: так же мне не нужно реализация через canvas, т.к. canvas это

это HTML элемент, использующийся для рисования графики средствами языков программирования (обычно это JavaScript)

Мне нужно изображение конвертировать прям перед отправкой, а не рисовать его. 90% статей делают реализацию через canvas, что для меня является просто бредом, т.к. это не подходит по тему конвертирования вообще.


Ответы (0 шт):