Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как передать BLOB по AJAX? (https://javascript.ru/forum/css-html/84281-kak-peredat-blob-po-ajax.html)

win32s 28.07.2022 14:27

Как передать BLOB по AJAX?
 
Есть такой браузерный код (скопипастил с учебника на сайте)
const size_WORD = 2;
const size_DWORD = 4;

function showFile(input) 
{
let pefile = input.files[0];
//console.log(`File name: ${pefile.name}`);
let reader = new FileReader();

reader.readAsArrayBuffer(pefile);

reader.onload = function() 
{
let _e_lfanew = new Uint32Array(reader.result, 60, size_DWORD);
_e_lfanew[0] = 123;

let link = document.createElement('a');
link.download = 'hello.exe';
let blob = new Blob([reader.result], {type: 'application/octet-stream'});
link.href = URL.createObjectURL(blob);
link.click();
URL.revokeObjectURL(link.href);

return;
}


Суть в том, что пользователь загружает бинарный файл, скрипт позволяет править в нем какие-то данные, и получить файл обратно. Но - как мне сохранить этот файл на сервере? Т.е. передать по AJAX куда-то там? Пробовал window.atob , чтобы перевести в base64 - не работает. все не тот формат для аякс.

voraa 28.07.2022 20:17

Это вы не на сервер передаете, а у себя на компе сохраняете.
На сервер отправить
fetch('server.url', {
    method: 'POST',
    body: myBlob
  });

win32s 31.07.2022 22:52

voraa, да, спасибо, это оно!
осталось еще переделать это в multipart-form data.
а как вообще fetch отправляет, как ajax или это "обычный" post запрос?

voraa 01.08.2022 09:09

Цитата:

Сообщение от win32s
а как вообще fetch отправляет, как ajax или это "обычный" post запрос?

Ну это ajax запрос, с получение ответа.
Вообще посмотрите
https://developer.mozilla.org/ru/doc...PI/Using_Fetch


Часовой пояс GMT +3, время: 17:27.