Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2022, 14:27
Аспирант
Отправить личное сообщение для win32s Посмотреть профиль Найти все сообщения от win32s
 
Регистрация: 28.09.2019
Сообщений: 30

Как передать 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 - не работает. все не тот формат для аякс.
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2022, 20:17
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 1,765

Это вы не на сервер передаете, а у себя на компе сохраняете.
На сервер отправить
fetch('server.url', {
    method: 'POST',
    body: myBlob
  });
Ответить с цитированием
  #3 (permalink)  
Старый 31.07.2022, 22:52
Аспирант
Отправить личное сообщение для win32s Посмотреть профиль Найти все сообщения от win32s
 
Регистрация: 28.09.2019
Сообщений: 30

voraa, да, спасибо, это оно!
осталось еще переделать это в multipart-form data.
а как вообще fetch отправляет, как ajax или это "обычный" post запрос?
Ответить с цитированием
  #4 (permalink)  
Старый 01.08.2022, 09:09
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 1,765

Сообщение от win32s
а как вообще fetch отправляет, как ajax или это "обычный" post запрос?
Ну это ajax запрос, с получение ответа.
Вообще посмотрите
https://developer.mozilla.org/ru/doc...PI/Using_Fetch
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать обработку динамически созданной формы через ajax? Wimko AJAX и COMET 4 08.10.2019 16:37
Как передать еще один параметр в ajax BesTime AJAX и COMET 2 11.03.2016 23:43
Как передать значение переменной? maksbp22 Общие вопросы Javascript 0 11.10.2013 15:21
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 13:05
Как в страницу подгружаемую через AJAX передать $_GET? pagal AJAX и COMET 7 08.11.2011 19:09