Как реализовать загрузку изображения путем вставки из буфера обмена?
В админке (создание контента) использую django-tinymce.
Исходный контент мне приходит в вордовом документе(ну да, так приходит, что ж сделать). Я с помощью потусторонних сил вставляю весь текст из word в поле для статьи. переносится форматирование как нужно(ну я немного потом правлю html). Однако картинки не переносятся. Небольшим поиском в гугле и нескольких тестов я понял что одновременно вставить текст и картинку невозможно. либо одно, либо другое. Отдельно потом я вставляю картинки, простым поипастом прям из word документа.
Всё отображается, всё нормально со стороны пользователя.
Однако если посмотреть html код страницы результата, то видно что изображения это data:image/png;base64. С одной стороны вроде ничего страшного, но страница начинает весить достаточно много и врятли это не сказывается на seo.
Возник вопрос по поводу реализации такого функционала:
- на той же форме добавления статьи сделать доп поле(наверно средствами jQuery, так как мне не нужна будет эта информация в базе)
- при вставке изображения в поле - это изображение загружается на сервер в определенную папку
- в еще одно поле(или в буфер обмена) мы получаем ссылку на это изображение для вставки в html или же прям весь тег img полностью, не суть.
Есть ли уже реализованная такая магия или куда копать?
Ну так берешь и парсишь html в переопределенном методе save у модели ( или можно сигналы использовать ) и сохраняешь эти data:image/png;base64 как картинки и заменяешь в html src на путь картинке.
Егор Казанцев: Спасибо Егор! именно переопределил метод save и заработало как часы!
Создал функцию которая парсит входящий html, декодирует base64, сохраняет в файл в папку статики, меняет в html data:image/png;base64 на ссылку на статику и сохраняет готовый результат. возможно можно было и элегантнее и проще, но мне нужно было решить задачу и я решил её в лоб. если есть вариант получше с удовольствием посмотрю.
В самой модели сделал вызов: