Я предполагаю, что должно быть легкое решение моей проблемы. но мое незнание 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.
Теперь, когда я нажимаю кнопку отправки, загружается исходное изображение, а не только что обрезанное. Это имеет смысл, потому что это то, что находится на входе. Однако, как я могу сделать так, чтобы вместо этого загружалось мое обрезанное изображение?
@RoryMcCrossan, я сделал то, что ты предложил. Но все же сталкиваюсь с одной проблемой: иногда строка Base64 настолько длинная, что возникает проблема обработки, из-за которой браузеры будут загружаться вечно. Любая идея, как решить эту проблему?
Должен сказать, я не совсем уверен, где возникает проблема. Я думаю, это потому, что строка слишком длинная, но не могу быть уверен. Журнал ничего мне не скажет, потому что браузер просто загружается вечно.
Вы, вероятно, достигли предела размера запроса GET в браузере. Попробуйте использовать POST, если вы еще этого не сделали.
@RoryMcCrossan Я уже использую POST. Любые другие предложения?
Я не вижу вашего скрытого поля ввода в скрипке. Или js, который устанавливает его значение. Вам нужно будет установить значение с чем-то вроде $imgel.attr('src', e.target.result), а затем отправить его с чем-то вроде $('#base64lg').val(result); $('#uploadLg').submit();



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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