Преобразование изображения base64 в файл в javascript или как передать большую строку base64 с помощью jquery ajax

0

Это не может занять больше времени. Я пытался это решить очень долгое время.

Я расскажу вам весь мой сценарий, а затем, в чем проблема.

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

Это группа переключателей:

o Twitter Logo
o Twitter Profile Picture
o Upload picture

Если пользователь выбирает вариант 1 или 2, img tag src обновляется с файлом локального проекта (http://localhost:9000/public/images/image.png), и это изображение src сохраняется в переменной хранения веб-сессии html5,

Если пользователь выбирает вариант 3, он/она выбирает файл со своего компьютера (под группой радиостанций появляется тип ввода = "файл"), а img tag src обновляется этим изображением. На этот раз src, который я буду хранить в переменной сеанса, не будет путь к файлу (который я знаю из соображений безопасности), но src будет строкой base64. Действительно большой, если пользователь выбирает большое изображение.

Итак, теперь у меня есть это изображение, хранящееся в переменной сеанса, либо путь к файлу изображения, включенному в папку проекта, либо изображение с кодировкой base64.

Теперь я должен извлечь это значение из переменной сеанса в JavaScript. Я хочу передать это изображение в свой код на стороне сервера. Для создания фактического изображения и загрузки его в места, но эта часть действительно не нужна.

Моя проблема в том, что в JavaScript я не могу передать это с помощью POST с использованием $.ajax. Строка base64 слишком большая, я думаю, и я не могу понять, как я могу преобразовать ее в что-то еще, скажем байт [].

Как мне это сделать? Я хочу передать это изображение, которое пользователь выбирает на стороне сервера для дальнейшего процесса. Затем на стороне сервера я хочу преобразовать его в фактический объект Image или BufferedImage.

Вот код-блок, как он выглядит сейчас:

function gatherSessionValuesAndGenerateCode(userEmail) {
var email           = userEmail;
var category        = getSessionValue("category");
var itemName        = getSessionValue("itemName");
var service         = getSessionValue("service");
var accountName     = getSessionValue("accountName");
var action          = getSessionValue("action");
var imageType       = getSessionValue("imageType");
var imageFile       = getSessionValue("imageFile");
var expirationDate  = getSessionValue("expirationDate");



$.ajax({
    type: "POST",
    url: "http://localhost:9000/quikkly/business/create/generate",
    data: {
        email: email,
        category: category,
        itemName: itemName,
        service: service,
        accountName: accountName,
        action: action,
        imageType: imageType,
        imageFile: imageFile, //This is making me feel ill, don't know how to solve it.
        expirationDate: expirationDate

    },
    success: function(response){console.log("Horayyy "+response)}
});
}
  • 0
    Разве вы не можете просто загрузить файл, вместо того, чтобы сначала конвертировать его в base64? Конечно, не enctype="multipart/form-data" добавить enctype="multipart/form-data" в <form> .
  • 0
    Действительно большая строка означает что? Обычно размер POST очень велик даже в мегабайтах, и я не думаю, что у вас есть строка base 64, которая больше чем 2-3 мегабайта. Если все еще у вас есть, то вы можете установить размер POST в конфигурации вашего сервера.
Показать ещё 2 комментария
Теги:
base64
image

1 ответ

1

хорошо, я получил вашу точку, но то, что я пытаюсь сказать, может быть, ваша строка содержит 20K символов, но я не думаю, что она может быть больше 2-3 Мб, и я надеюсь, что ваши настройки сервера позволяют публиковать данные размером 2 -3 МБ.

Помимо этого, я думаю, что создание имени пути изображения в base_64 не является хорошей идеей. Если вы считаете, что кто-то может выталкивать данные из вашего изображения, тогда он может сделать что-то с вашей полной концепцией веб-сайта.

Потому что любой, как человек может видеть путь к изображению, даже когда вы показываете какое-то изображение через веб-страницу.

Тем не менее, если вы считаете, что вам не нужен путь в виде просмотра, вы можете сохранить его в каком-либо файле в паре ключей или вы можете сохранить его в базе данных.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню