Jump to content

Автоматическая загрузка изображений при их вставке в сообщение


cyrax_02
 Share

Recommended Posts

Каким образом можно заставить CKE автоматически загружать изображения при их вставке в сообщение ?

Это принципиальный вопрос.

 

Причины:

1) Такова бизнес-логика в нашей конторе

2) Сторонние ресурсы могут закрыться или "лечь"

3) Сторонние ресурсы могут поставить в .htaccess запрет на загрузку изображений с других ресурсов (широкая практика)

 

P.S. Что-то слишком слаб CKE Editor по сравнению с TinyMCE. Ужас...

Link to comment
Share on other sites

Следует понимать, что CKE это всего лишь визуальный редактор на клиентском языке, и сам по себе на сервер он ничего загружать не может. Возможно есть какие-то специальные плагины с дополнительными php скриптами/библиотеками которые загружают файлы на сервер. Но лично я таких не встречал, да и особо не искал (есть Inline Image Uploader для IPB от ritsuka, но он не автоматический).

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

Link to comment
Share on other sites

Следует понимать, что CKE это всего лишь визуальный редактор на клиентском языке, и сам по себе на сервер он ничего загружать не может.

К примеру, TinyMCE при вставке изображения через буфер вставляет его как base64. Впрочем, такой вариант не очень хорош, т.к. БД быстро распухнет + не будет возможности раздельно бэкапить такие изображения и прочие данные из БД (изображения - реже, остальное - чаще).

 

Возможно есть какие-то специальные плагины с дополнительными php скриптами/библиотеками которые загружают файлы на сервер. Но лично я таких не встречал, да и особо не искал (есть Inline Image Uploader для IPB от ritsuka, но он не автоматический).

Но коли CKE интегрирован в IP.Board "из коробки", то вполне логична опциональная реализация такой загрузки. А загрузку можно реализовать через те же самые javascrip'ы на клиенте (которые выполняют коннект с сервером и выполняют загрузку). Не может быть такого, чтобы CKE не предоставлял возможность добавлять свой (ака бордовский) javascript-функционал через плагины, события или иной механизм.

 

Нужно написать хук, который при отправке поста спарсит все теги img и загрузит их на свой сервер.

Не так всё просто. Нужно не только загрузить и получить ссылку, но ещё и в полной мере реализовать логику квотирования пользователя.

 

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

Много движений пользователя (если делать всё это вручную), но только не для программного кода. Он всё стерпит.

Link to comment
Share on other sites

К примеру, TinyMCE при вставке изображения через буфер вставляет его как base64.

Именно что из буффера. При желание, такое можно реализовать и на CKE.

 

А загрузку можно реализовать через те же самые javascrip'ы на клиенте (которые выполняют коннект с сервером и выполняют загрузку).

Это если локальные файлы, здесь речь о удаленных. При том, js на сервер файлы сохранять не может, нужен серверный обработчик. А CKE в первую очередь редактор, его назначение не загрузка удаленных файлов а форматирование текста на уровне клиента (браузера).

 

Не так всё просто. Нужно не только загрузить и получить ссылку, но ещё и в полной мере реализовать логику квотирования пользователя.

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

Link to comment
Share on other sites

Это если локальные файлы, здесь речь о удаленных. При том, js на сервер файлы сохранять не может, нужен серверный обработчик.

Под "выполнением загрузки" я как раз и имею ввиду запрос некоторого серверного скрипта с передачей тому url-ссылки, который (запрос) и выполнит физическую загрузку.

 

А CKE в первую очередь редактор, его назначение не загрузка удаленных файлов а форматирование текста на уровне клиента (браузера).
Тем более это не прерогатива редактора. Это находится на уровне форума, поэтому логичнее делать там. С редактором все равно придется подключать форум, что вместе с редактором в двойне усложняет задачу.

Но ведь никто не мешает выполнять загрузку не в момент вставки изображения на клиенте, а в момент сохранения сообщения на сервере. Скажем, CKE вставляет изображение как base64 (как TinyMCE), а сервер при получении текста сообщения выполняет сохранение у себя в папке uploads всех base64-изображений из полученного html-текста сообщения.

Edited by cyrax_02
Link to comment
Share on other sites

Скажем, CKE вставляет изображение как base64 (как TinyMCE)

В base64 кодируются изображения из буффера, а тут ссылка на изображение, это две больше разницы. В момент сохранения нет смысла в этом изврате, можно и так получить все ссылки и загрузить их на сервер, в чем и заключается задача хука.

Link to comment
Share on other sites

(DP34) Download Images

Насколько я понял, этот хук:

а) не реализует логику квотирования

б) не реализует миниатюры (как в случае с изображениями, прикреплёнными стандартными средствами)

 

Может быть, в IP.Board 4 подобное реализовано "из коробки" ?

Link to comment
Share on other sites

а) не реализует логику квотирования

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

 

не реализует миниатюры (как в случае с изображениями, прикреплёнными стандартными средствами)

Миниатюр нет и у стандартных inline-изображений, там ресайз на js + css. Тумбы есть только у аттачей.

 

Может быть, в IP.Board 4 подобное реализовано "из коробки" ?

Можно надеяться, но я сомневаюсь.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...