Ссылки
Поиск
Новости, Статьи |
Форум |
Файлы |
Привет, Гость
Обновления на форуме
Гадания на таро 0 >> |
Блок новостей в виде блога 1 >> |
Игры для сайта 34 >> |
Сервис создания тестов 94 >> |
Дед 1 >> |
Последние статьи
Подсчёт чистого времени работы 0 |
Антиспам «Я не робот» 0 |
За что воюет Украина и когда всё это кончится 12 |
Портфолио — сайт о художественной ковке 0 |
Изменение цен 0 |
Наши чувства, наконец, стали взаимны. Теперь мне тоже пох*й.
Разделы → Статьи → Обновления ReloadCMS → Загрузка в статью картинок с помощью AJAX
Вставка картинок на сайт без перезагрузки страницы Задача написания Аяксового загрузчика встало передо мной неожиданно - получил заказ на сайт со множеством картинок в статьях. Вместо тупой механической работы решил облегчить жизнь себе и людям - написать загрузчик картинок в статью. Решение начинается с постановки задачи. Что есть на сегодняшний день? Сейчас в ReloadCMS 1.2.7 картинки на сайт грузятся с помощью ссылки "Загрузка файлов" в админке. Решение от Greenray в 1.2.8 - 1.3beta, который первым в ReloadCMS-сообществе реализовал фичу загрузки в статью и комментарии, очень хорошо, но не подошло мне по следующим причинам: 1. При добавлении картинки страница перезагружается целиком. А значит статью где-то промежуточно нужно сохранять. Если сервер окажется в этот момент недоступен, статья пропадёт целиком. AJAX использовать сложнее, но зато результат - более приемлем: - На сервер меньше нагрузка (для файлового движка - важно!); - Меньше траффик; - Весь текст статьи хранится у пользователя, и если у него пропало электричество - сам виноват, мы ни при чём (шутка). 2. Разрешение загрузки картинок в комментарии к статьям является, по-моему, ошибкой. Если это разрешать, то только для Редактора статей или админа. 3. Вынесение загруженных файлов из единой папки uploads - тоже, по- моему, ошибка. В 1.2.9 загруженные в статью файлы хранятся в папке статей, и могут быть стёрты при удалении статьи. Или у неё изменится адрес при переносе статьи между категориями. Например, я люблю публиковать статью не сразу, а сохранять в черновиках и дорабатывать со временем. При переносе статьи меняется и адрес картинок. А если на картинку поставили ссылку? А если она применяется в нескольких статьях? А как исключить сжатие картинок, особенно больших, при архивации данных (у меня папка uploads исключена из архивации)? Больше вопросов, чем ответов. Поэтому я решил оставить это как есть, в будущем году при переработке движка добавив сортировку загруженных файлов - по алфавиту, размеру и по времени закачки. Возможно добавление времени создания в линукс-формате в начало файла. Пока не решил, буду решать в марте 2011г. 4. Ну и самый главный аргумент: загрузка средствами AJAX - это круто, модно и кошерно. Поэтому отметаем всё и делаем с нуля. Что нам надо получить в итоге? Опишем порядок работы идеального загрузчика: 1. Заходим в админку, жмём "Публикация статьи". 2. Пишем статью, время от времени подгружая картинки в нужные места. 3. Если адрес хоста, загружающего картинку, не совпадает с вашим - стереть бяку и вывести ошибку (привет хакерам!). 4. Проверка картинок, по расширениям (jpg,png,gif). Jpeg - расширение отметаю как устаревшее, потому как за 2 последних года не встречал. Если загруженное - не картинка, вывести ошибку и стереть загруженную гадость. //upd - картинки можно ещё проверять по внутреннему содержанию средствами PHP, а не только по расширениям - добавим позже и эту защиту! 5. Ссылка на картинку должна вставляться в поле ввода текста, в конец его. 6. Если название файла на русском (а бывают и такие товарищи), переводить в латиницу. 7. Если файл большой и долго загружается - показать процесс загрузки. Собственно, всё кроме п.7 и реализовано в модуле загрузки картинок. Поэтому он, конечно, не идеален. Но вполне работоспособен. Ссылка на скачку. Установка на сервер - распаковать и залить по ФТП. Пока замеченный баг - ошибки загрузки картинок пишутся прямо в текст статьи. Точнее это не баг, а просто я не придумал куда их писать-то ещё? //upd Ещё хорошее решение я видел здесь. Там вообще чел грузит файлы пачками, с использованием jQuery Но он (пока) нам не подходит, т.к. некорректно работает с русскими однобайтными кодировками. |
||
09.10.2010 13:17 | Автор/источник: Den1xxx |
Комментировать
Вы не залогинены! Регистрация
Комментарии
admin![]() |
19:55:31 13 Октябрь 2010 | |
Цитата: Простите за многословия - все мои замечания это вовсе не критика Да всё нормально, идёт рабочее обсуждение. И в критике не вижу ничего плохого - правильная критика помогает двигаться вперёд.Конечно нужно добавить настройки архивации http://from...p;pid=30#30 |
Гость![]() |
16:22:54 13 Октябрь 2010 | |
Я понял что в этом дело. К слову - в глючном и неудобном битриксе(вообще позор для платной системы) архивация предусмотрена автоматом в несколько частей, специально на ограниченное время исполнения скрипта. Сейчас мне проще бекапить ВСЕ СРАЗУ весь сайт через админку хостинга, ибо картинки картинками, тексты текстами, но статья с иллюстрациями все-таки один цельный элемент по смыслу. Простите за многословия - все мои замечания это вовсе не критика, а всего лишь простой отчет beta-тестера, ну может чуть-чуть пожеланий на будущее ![]() |
admin![]() |
14:02:22 13 Октябрь 2010 | |
Цитата: возвращения uploads в back-up Это не планируется. Подправить возвращение uploads в back-up можете вручную, но сначала почитайте эту тему http://relo...5&pid=8Когда делается архивация множества файлов, PHP может превысить разрешаемое время для исполнения, и сервер прервёт скрипт. По-умолчанию exec_time равно всего 30 сек. За это время на старых сайтах с большим количеством информации не удаётся упаковать ещё и закачанные файлы. Поэтому uploads перенесён из папки contents, где он был первоначально, в корень. Как раз чтобы не сжимать его при бэкапе. При этом картинки галереи не исключены из архивации. Back-up нужен на сайте, чтобы сохранять текстовый контент - его трудно, а подчас и невозможно восстановить. А картинки можно перезалить по-новой. Папка для хранения его всегда известна ![]() Текстовые файлы могут \"биться\" при большой нагрузке, т.к. в них идёт запись. А в картинки никто не пишет, поэтому бэкапить их незачем. |
Гость![]() |
12:23:00 13 Октябрь 2010 | |
admin![]() |
08:41:12 11 Октябрь 2010 | |
Цитата: в крайнем случае выделить в контенте отдельную папку, в любом случае про своевременное удаление ненужных изображений пусть юзер сам не забывает. Я против того чтоб \"юзер сам не забывал\".1. Из папки uploads можно подхватывать загруженные файлы и повторно вставлять их в статью. При публикации статьи есть выбор \"Добавить ссылку на файл\". 2. Их можно просматривать и удалять из админки, кликнув \"Загрузка файлов\". 3. Можете сделать \"свой собственный лунапарк - с блэкджеком и шлюхами\", но о совместимости с последующими версиями придётся забыть. |
Устал читать? Напиши! Или позвони +375 29 5344286. На связи по будним дням с 800 до 1700.