Заменить ввод (файл) вновь созданным файлом

Я предполагаю, что должно быть легкое решение моей проблемы. но мое незнание JS мешает мне решить эту проблему.

У меня есть поле input для файла, в котором после выбора файла появляется модальное всплывающее окно начальной загрузки, чтобы обрезать это изображение с помощью Croppie.js. Затем изображение отображается так, как оно должно выглядеть (обрезанная версия).

Мой HTML (соответствующие части):

  <!-- this is where the image will appear -->
  <img src = "" class = "js-image img-responsive img-thumbnail" id = "item-img-output" />

  <input type = "file" id = "program_header_image_headerImage_file" name = "program_header_image[headerImage][file]" class = "js-item-upload form-control-file">
  <button type = "submit" class = "btn btn-success" style = "margin-top: 15px">Save</button>

JS (соответствующие части)

$('#cropImageBtn').on('click', function(ev) {
      $uploadCrop.croppie('result', {
        type: 'base64',
        format: 'jpeg',
        size: {
          width: 1920,
          height: 400
        }
      }).then(function(resp) {
        $('#item-img-output').attr('src', resp);
        $('#cropImagePop').modal('hide');
      });

Чтобы увидеть это в действии, используйте JSFiddle.

Теперь, когда я нажимаю кнопку отправки, загружается исходное изображение, а не только что обрезанное. Это имеет смысл, потому что это то, что находится на входе. Однако, как я могу сделать так, чтобы вместо этого загружалось мое обрезанное изображение?

Из HTML-результата страницы после обрезки resp — это строка в кодировке Base64. Таким образом, вы можете включить его в скрытое поле в своей форме, чтобы включить его в отправку. Затем вы можете превратить это обратно в двоичный образ на сервере.

Rory McCrossan 12.03.2019 14:34

@RoryMcCrossan, я сделал то, что ты предложил. Но все же сталкиваюсь с одной проблемой: иногда строка Base64 настолько длинная, что возникает проблема обработки, из-за которой браузеры будут загружаться вечно. Любая идея, как решить эту проблему?

Dirk J. Faber 12.03.2019 17:16

Должен сказать, я не совсем уверен, где возникает проблема. Я думаю, это потому, что строка слишком длинная, но не могу быть уверен. Журнал ничего мне не скажет, потому что браузер просто загружается вечно.

Dirk J. Faber 12.03.2019 17:19

Вы, вероятно, достигли предела размера запроса GET в браузере. Попробуйте использовать POST, если вы еще этого не сделали.

Rory McCrossan 12.03.2019 17:20

@RoryMcCrossan Я уже использую POST. Любые другие предложения?

Dirk J. Faber 12.03.2019 17:47

Я не вижу вашего скрытого поля ввода в скрипке. Или js, который устанавливает его значение. Вам нужно будет установить значение с чем-то вроде $imgel.attr('src', e.target.result), а затем отправить его с чем-то вроде $('#base64lg').val(result); $('#uploadLg').submit();

silencedogood 15.03.2019 14:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
52
0

Другие вопросы по теме