Установка параметра размера в заголовке размещения содержимого с помощью Javascript - PullRequest
0 голосов
/ 06 декабря 2018

Проблема

Я уже довольно давно пытаюсь установить параметр size в заголовке размещения содержимого.

function uploadFile(file) {
    const data = new FormData();
    data.append('file', file);

    axios.post('url/of/endpoint', data);

FormData не отправляет параметр размерапо умолчанию, и, насколько мне известно, я не вижу способа настроить его сам.Есть ли способ сделать это с Axios?Нужно ли мне переходить на более низкий уровень и создавать свои собственные заголовки?

Контекст

Моя основная задача - передать поток ввода файлов через конечную точку Java на S3.Но без размера файла все данные загружаются в память и имеют высокую вероятность возникновения исключения OOM.Эта конкретная проблема была также задана здесь .Является ли запись моего собственного байтового буфера единственным способом?Должен ли я просто перестать быть ленивым и сделать это?Похоже на слишком сложное решение ...

Есть ли причина, по которой размер файла обычно не включается в FormData?Я пытался использовать Content-Length, но он включает в себя заголовок расположения контента и приводит к несовпадающему количеству байтов.

1 Ответ

0 голосов
/ 07 декабря 2018

Правильно, поэтому, пройдя по офису ... потом к своим друзьям ... Я прихожу к выводу, что это недостаток Java.Ну, не оригинальный вопрос, а тот факт, что для многоэтапной загрузки требуется общий размер файла.Итак, реализация, с которой я сейчас работаю, которая заставляет меня чувствовать себя очень грязно, - это добавление элемента FormData size на стороне клиента.

function uploadFile(file) {
    const data = new FormData();
    data.append('size', file.size.toString());
    data.append('file', file);

    axios.post('url/of/endpoint', data);

И затем обновление бэкэнда для передачи этого размераS3 SDK ... ... оф.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...