Я работаю над веб-сайтом, который позволяет пользователям редактировать фотографии (в браузере), а затем загружать их. Чтобы редактировать изображения в браузере, я использую некоторые библиотеки JavaScript, которые работают с изображениями в base64. В результате для отправки POST изображения на мой сервер нельзя использовать простую форму с вводом файла. Значение скрытого ввода устанавливается в строку base64 отредактированного изображения, и это POSTED. Пожалуйста, см. Следующий, короткий пример.POSTing base64 данные JavaScript/jQuery
Очевидно, что это очень сильно урезанная, но он содержит проблему, я бегу в. В POSTing 3MB анимированный GIF это заняло 6.5 минут. Во время которого мой компьютер был почти полностью заморожен/не отвечает. (Примечание: Это хорошо работает )
Возможно, это проблема с ОС/браузером (последний Google Chrome на Ubuntu), но я сомневаюсь. Если я вставляю этот файл в форму и удаляю base64-ing данных (т. Е. Стандартная POST-запись файла), то это происходит примерно через одну секунду.
Сравнить 6.5 минут до 1 секунды. Я должен делать что-то неправильно. Что я здесь делаю неправильно? Что я должен делать вместо этого? Я довольно новичок в веб-разработке, поэтому я немного в темноте. Я знаю, что base64 имеет что-то вроде увеличения размера 1.3x, но, очевидно, время загрузки здесь не масштабируется с 1,3x. Я сделал немного console.logging, и
var base64 = reader.result;
занимает около секунды. Поэтому я не думаю, что это узкое место. Узкое место должно быть в загрузке. Но почему? Почему входной файл формы так намного быстрее, чем форма скрытого ввода с base64?
Прошу прощения за мой длинный отложенный пост, но опять же, я новичок в веб-разработке, и не знаю действительно понимаю мою проблему, поэтому трудно быть кратким, получая всю информацию.
Благодаря
Что такое сервер бэкенд? – arb
-Интерфейс данных - это не то же самое, что base64 ... В наши дни URL-адреса данных - это в основном UUID, а не полный base64 body + meta data. Загрузка этого UUID бесполезна. Если вы действительно имеете в виду base64 в JS, используйте ['btoa()'] (https://developer.mozilla.org/en-US/docs/Web/API/window.btoa). – Rudie
Мой серверный сервер? Это PHP. (Это то, что вы просите?) –