Альтернативная загрузка изображений в СМФ

Автор kak2z, 03 января 2015, 12:16:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kak2z

В общем есть такие мысли
Навеяны они в очередной раз после того как у меня при попытки зайти в админке в раздел вложения сервер после долгого ожидания отдал белый лист.. папки переполняются, файлов много и боюсь что скоро вообще не смогу добавить новую папку в вложения.
Полез я искать какие то альтернативы и нашел вот что http://blueimp.github.io/jQuery-File-Upload/index.html шикарный загрузчик который можно немного допилить..  в моем понимании логика работы скрипта загрузки должна быть такая.

1. Загрузили файл в папку "/год/месяц/число"
1.1. с проверкой на безопасность
1.2. с сжатием до нужного размера (max_width_image max_height_image) и преобразованием в jpg
1.3. если это gif то не сжимать при условии если размер не больше max_size_gif, если больше отменить загрузку и сообщить про ошибку
1.4. создать превью нужного размера (см пп 1.4.1. и 1.4.2.) в папке "/год/месяц/число/thumb/имя оригинального файла"
1.4.1. если width >  height то height_thumb = max_height_thumb
1.4.2. если width <  height то width_thumb = max_width_thumb
2. Записали в таблицу img_list_files время создания в формате timespamp приведенных в int/id пользователя (int)/путь файла (var_char)/имя файла (var_char)/
3. Автоматически добавили ссылки на все загруженные файлы в пост.

если все это успешно то  (это надо лично для меня, для отображения на главной превьюх в виде ленты новостей)
3. Если изображения добавляются в первый пост топика то:
3.1. Обработали пост и нашли последнюю ссылку на изображение ([img]http://ссылка на изображение[/img])
3.1. проверили доступность превью изображение если не доступно то берем предыдущее, если доступно то:
3.2. в таблицу img_topic_relevance добавили ид топика/путь к превью изображения/имя превью (см п1.4. совпадает с именем оригинального изображения).
если в таблице уже есть запись соотносящаяся к текущему ИД топика - то обновляем запись внося новые данные.

так же было бы идеально что бы
1. скрипт мог работать на поддоменах или других доменах, возможно вставка в форму добавления/редактирования сообщения в виде iframe? или еще какой то способ.. зачем это?? а вот зачем.. что бы хранить форум на одном хостинге, а файлы на другом.. сейчас есть хостинги с условно безлимитным местом для сайтов.
2. Что бы под сообщением при редактировании было видно какие файлы уже связанны с этим сообщением.


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

Плюс это полезно будет для вставки изображений в любое место поста.. плюс прямые ссылки на изображения и снижение нагрузки на сервер.. плюс при миграции на смф21 или в будущем смф3 все посты будут в виде тега img а не в виде всяких там модов ILA или еще каких то..
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

digger®

Цитата: kak2z от 03 января 2015, 12:16:43Плюс это полезно будет для вставки изображений в любое место поста.. плюс прямые ссылки на изображения и снижение нагрузки на сервер.. плюс при миграции на смф21 или в будущем смф3 все посты будут в виде тега img а не в виде всяких там модов ILA или еще каких то..
Категорически поддерживаю.

kak2z

#2
Цитата: digger® от 07 января 2015, 02:07:43
Категорически поддерживаю.
я сейчас начал продумывать как это все сделать...  вижу две проблемы, сложные лично для меня.
1. Сам ajax, я совсем не разбираюсь в java script и пока мне сложно понять что и как делать.
2. Работа скрипта на поддоменах, тут скорее всего надо что бы в iframe скрипт выполнялся. Но это, не особая проблема, потому что это на пхп, а с пхп я смогу разобраться)
3. Если скрипт будет работать в iframe как брать ИД пользователя? Сообщения?

Но есть вопросы важные на которые я пока не нашел ответы:
1. Может ли субдиректория форума к примеру http://www.simplemachines.ru/my_files/ находиться не на том же сервере где находится корневая директория движка? Можно ли делать в линуксе алиасы на директории расположенные на других хостингах (не дедиках, а именно хостингах). (могу неправильно выражаться но смысл должен быть понятен)
2. Есть ajax аплоадеры которые поддерживают обрезку изображений. На чьей стороне это происходит? По идее ajax всего навсего управляет скриптами пхп расположенными на сервере, но как тогда быть с той картинкой что обрезается? Ведь она обрезается, а потом уже загружается на сервер. Вот этот момент мне совсем не понятен.

Так же я пересмотрел мое виденье каталогизации изображений, теперь работа в моем представлении должна приблизительно быть такая:

1. Вместо обычного загрузчика стоит AJAX позволяющий делать мультизагрузку.
2. После загрузки файлов под формой загрузчика ("Выберите файлы") добавляются поля input type="text" readonly="readonly" - сколько файлов столько и полей добавляется. В каждом поле ссылка на картинку. А напротив превью изображения. 
3. И вместе с этим автоматически ссылка вставляется в поле для текста в теге IMG
4. При необходимости, при нажатии на текстовое поле (input type="text" readonly="readonly") ссылка повторно вставляется в сообщение.
5. Есть отдельная таблица у картинок, у каждой записи есть ИД пользователя загрузившего, ИД сообщения в котором была загрузка, путь к изображению.
6. При загрузке сообщения сжимаются до нужных размеров и преобразовываются в JPG, gif изображения не сжимаются и не преобразовываются если размер не больше N килобайт.
7. Создаются preview
8. Файлы при создании сразу сортируются по директориям /год/месяц/число/ а их preview в /год/месяц/число/thumb/
9. На каком этапе возможна обрезка изображений я не могу пока понять, потому что не понимаю принцип работы этой самой обрезки))
10.  очень хочется еще что бы была загрузка файлов по URL
11. при последующем редактировании сообщения под ним есть список файлов привязанных к этому сообщению в виде "input type="text" readonly="readonly"". эти файлы можно удалять при необходимости.

пережимать сообщения, проверять на безопасность, записывать в базу информацию о них, создавать директории ежедневно для записи файлов - это все не сложно.. но вот часть с ajax это для меня непроходимая  часть.. по мануалам я пытаюсь сейчас разобраться с готовыми скриптами - но учитывая мои хотелки - каждый скрипт надо так или иначе переделывать.. а тут я уже ничего не могу сделать.
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Mavn

Цитата: kak2z от 07 января 2015, 10:15:511. Может ли субдиректория форума к примеру http://www.simplemachines.ru/my_files/ находиться не на том же сервере где находится корневая директория движка? Можно ли делать в линуксе алиасы на директории расположенные на других хостингах (не дедиках, а именно хостингах). (могу неправильно выражаться но смысл должен быть понятен)
можно монтировать папки фтп или ssh в нужную директорию
ftpfs и sshfs
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kak2z

Цитата: Mavn от 07 января 2015, 11:42:23
можно монтировать папки фтп или ssh в нужную директорию
ftpfs и sshfs
Это отлично! Тогда вопрос с iframe отпадает и вместе с ним отпадают еще некоторые сложности, такие как получение данных пользователя СМФ из iframe.
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Mavn

Цитата: kak2z от 07 января 2015, 11:53:44
Это отлично! Тогда вопрос с iframe отпадает и вместе с ним отпадают еще некоторые сложности, такие как получение данных пользователя СМФ из iframe.

если ты хочешь использовать типа анлин хостинг какой-нибудь типа хостмонстер то с этим могут возникнуть проблемы.. у них хоть и написано по анлим но на самом деле это не так ... если будет довольно много пользоваться фтп(к примеру) но по http ничего не будет пользоваться то могут заблочить акк
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kak2z

Цитата: Mavn от 07 января 2015, 11:59:10
если ты хочешь использовать типа анлин хостинг какой-нибудь типа хостмонстер то с этим могут возникнуть проблемы.. у них хоть и написано по анлим но на самом деле это не так ... если будет довольно много пользоваться фтп(к примеру) но по http ничего не будет пользоваться то могут заблочить акк
программа минимум сделать мод что бы работал на моем сервере.. а потом уже попытаться разнести по разным серверам картинки и сам движок) на будущее можно попробовать взять хостинг для бекапов.. что бы там хранить файлы..
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Mavn

Цитата: kak2z от 07 января 2015, 12:05:15
программа минимум сделать мод что бы работал на моем сервере.. а потом уже попытаться разнести по разным серверам картинки и сам движок) на будущее можно попробовать взять хостинг для бекапов.. что бы там хранить файлы..
иногда проще брать не хостинг для бэкапов... а какой нить сервак ... для примера можно на том же хетхнере за 35 евро взять сервак с 2*3ТБ винчами что по текущему курсу будет не больше 2500 рублей в общем нужно смотреть где дешевле взять... или может на той же агаве поставить какой-нибудь сервак с 2Тб винчом за 1к рублей в общем вопрос первоначальных затрат
я бы может лучше вписал бы возможность указывать урл по которому будут отображаться файлы например на другой домен(субдомен) типа fl.simplemachines.ru
тогда можно будет грузить по фтпфс ссхфс файлы а отображать по другому адресу
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kak2z

Цитата: Mavn от 07 января 2015, 12:16:40
иногда проще брать не хостинг для бэкапов... а какой нить сервак ... для примера можно на том же хетхнере за 35 евро взять сервак с 2*3ТБ винчами что по текущему курсу будет не больше 2500 рублей в общем нужно смотреть где дешевле взять... или может на той же агаве поставить какой-нибудь сервак с 2Тб винчом за 1к рублей в общем вопрос первоначальных затрат
я бы может лучше вписал бы возможность указывать урл по которому будут отображаться файлы например на другой домен(субдомен) типа fl.simplemachines.ru
тогда можно будет грузить по фтпфс ссхфс файлы а отображать по другому адресу
субдомен тоже хороший вариант.. я бы даже сказал ничуть не хуже чем алиасы на директории..
а почему хостинг для хранения изображений я рассматривал, потому что там облако как правило и бекапы автоматом делаются, что облегчает жизнь немного)) но хостинг на субдомен еще проще прицепить.. но тогда опять же становится вариант как получать данные СМФ в iframe.
Хотя можно без iframe загружать файлы на поддомен по ФТП а получать уже УРЛом с поддомена..
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Mavn

Цитата: kak2z от 07 января 2015, 12:23:11
субдомен тоже хороший вариант.. я бы даже сказал ничуть не хуже чем алиасы на директории..
а почему хостинг для хранения изображений я рассматривал, потому что там облако как правило и бекапы автоматом делаются, что облегчает жизнь немного)) но хостинг на субдомен еще проще прицепить.. но тогда опять же становится вариант как получать данные СМФ в iframe.
Хотя можно без iframe загружать файлы на поддомен по ФТП а получать уже УРЛом с поддомена..
зачем iframe? ты грузишь все также в папку которая смонтирована на другой хост а потом берешь изображение не по адресу http://www.simplemachines.ru/my_files/   а по fl.simplemachines.ru/YYYY/MM/D/image проблем не вижу
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kak2z

Цитата: Mavn от 07 января 2015, 12:54:52
зачем iframe? ты грузишь все также в папку которая смонтирована на другой хост а потом берешь изображение не по адресу http://www.simplemachines.ru/my_files/   а по fl.simplemachines.ru/YYYY/MM/D/image проблем не вижу
тогда это получается локальный пхп скрипт который осуществляет загрузку на смонтированную папку, удаленное хранение файлов и загрузка их в постах форума с субдомена.. вообще чудесно и намного проще чем я себе это представлял...
Спасибо что эти нюансы разъяснили) но если можно уточнение)
доступ к папке смонтированной будет из скрипта без ФТП доступа, просто указываем путь локальный и скрипту не важно это папка локальная или смонтированая? я правильно понимаю как это работает?
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Mavn

скрипт и знать не будет что у тебя папка смонтирована ... папка и в Африке папка.. подумаешь располагается на другом серваке
ко всему прочему если брать тот же хетзнер там конфига из двух винчей вероятность что выйдет из строя сразу 2 винча крайне мала а при зеркале вроде все норм должно быть. потом я себе не представляю сколько картинок должно быть чтобы засрать 1-2Тера в любом случае минимум 1тер у тебя остается под бэкапы а сделать rsync, rsnapshot или еще чего  не такая большая проблема.
add
единственное наверное стоит пояснить что место где устанавливается сам скрипт загрузки должен быть впс или дедик чтобы настроить эти самые монтируемые папки, в твоем случае все будет типа в шоколаде на шареде скорее всего не все так просто будет
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kak2z

Цитата: Mavn от 07 января 2015, 15:09:11единственное наверное стоит пояснить что место где устанавливается сам скрипт загрузки должен быть впс или дедик чтобы настроить эти самые монтируемые папки, в твоем случае все будет типа в шоколаде на шареде скорее всего не все так просто будет
ну судя по моему опыту тем форумам которые хостятся на хостинге - такой мод особо и не надо.. изображений не много..
а когда много сообщений то уже хостингом не обойтись - тогда можно делать что угодно)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Mavn

ну на всяк случай предупредил чтобы потом не было что кто то не знает о подводных камнях
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

karavan

Моих приучил пользоваться Радикалом и давно никто не жужжит и место на хостинге не переводится :)

kak2z

Цитата: karavan от 07 января 2015, 19:29:12
Моих приучил пользоваться Радикалом и давно никто не жужжит и место на хостинге не переводится :)
а потом открываешь топик, а в нем только ссылки, без картинок)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

karavan

не знаю за 5 лет такого практически не бывало.

Mavn

Цитата: karavan от 07 января 2015, 21:13:56
не знаю за 5 лет такого практически не бывало.
здесь на проекте есть несколько тем где изображение нет а только ссылки на картинки
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

karavan

не спорю, такое может быть, ведь это бесплатный сервис  :-[

digger®

А почему файлы необходимо хранить, именно, как "/год/месяц/число"? Почему не "id_раздела/id_темы/id_сообщения", например. Или еще как-нибудь?

kak2z

#20
Цитата: digger® от 08 января 2015, 05:13:26
А почему файлы необходимо хранить, именно, как "/год/месяц/число"? Почему не "id_раздела/id_темы/id_сообщения", например. Или еще как-нибудь?
ну я как размышял,
ИД раздела может меняться
ИД темы при разределение или склеивании темы можем менятся
ИД сообщения думал указывать в таблице а потом при необходимости уже из базы СМФ доставать ИД раздела и ИД темы исходя из ИД сообщения..
а ГГГГ/ММ/ДД как бы константа которая ни на что не влияет)
кроме того ИД сообщения и ИД темы мы часто не знаем до тех пор пока не создадим тему.. а учитывая то что у нас загрузка изображений будет без обновления страницы то у нас иногда может получиться ситуация когда изображение уже есть, а сообщения и его ИД еще нет..

а путь к файлу в таблице мне кажется лучше указывать не в одном поле, а в 4х
1 поле: сервер - если будет разносить в будущем на разные поддомены
2 поле: гггг
3 поле: мм
4 поле: дд
что бы потом можно было легко делать выборку файлов за определенный период без использования дополнительного поля timespamp
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

valek0972

Цитата: kak2z от 03 января 2015, 12:16:43Альтернативная загрузка изображений в СМФ
Что то у меня такие чуство что вы сами быстрей напишите этот мод, я бы поучаствовал в его воплощении в жизнь, жаль что пока тишина и цена вопроса пока не озвучена, хотя бы приблизительно.

kak2z

Цитата: valek0972 от 08 января 2015, 12:49:11
Что то у меня такие чуство что вы сами быстрей напишите этот мод, я бы поучаствовал в его воплощении в жизнь, жаль что пока тишина и цена вопроса пока не озвучена, хотя бы приблизительно.
Мы сейчас с Диггером на эту тему общаемся))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

valek0972

Цитата: kak2z от 08 января 2015, 12:50:42Мы сейчас с Диггером на эту тему общаемся))
Ок, потом или в теме или в личку отпишитесь что по  чем.

Yworld_garry

Вот скриптик http://fineuploader.com/index.html две лицензии коммерческая и простая.

Кстати сразу в коробке автоматом на амазон загрзка, что подойдет большинству. Бесплатно не много дают 5 гигов и что то там по запросам, но платные так же копейки.
В общем есть смысл присмотрется, там масса вариантов самих загрузчиков, как и мест хранения.

kak2z

Цитата: Yworld_garry от 09 января 2015, 16:32:31
Вот скриптик http://fineuploader.com/index.html две лицензии коммерческая и простая.

Кстати сразу в коробке автоматом на амазон загрзка, что подойдет большинству. Бесплатно не много дают 5 гигов и что то там по запросам, но платные так же копейки.
В общем есть смысл присмотрется, там масса вариантов самих загрузчиков, как и мест хранения.
найти где хранить не самая большая проблема)) проблема подключить это все безобразие к СМФ))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Yworld_garry

Это понятно, я как вариант реализации...

kak2z

Цитата: Yworld_garry от 09 января 2015, 16:42:48
Это понятно, я как вариант реализации...
а)) я понял)) я перерыл кучу скриптов разных.. есть просто замечательные скрипты загрузки.. есть WYSIWYG редакторы с функцией загрузки изображений с диска и по ссылке.. (загрузка по ссылке это вообще мечта)))
но все это надо интегрировать так что бы было пользователям удобно.. плюс нужны небольшие переделки скриптов.. а тут без знаний ajax не обойтись.. я может когда вырасту))) и выучу ajax)) но пока никак))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

digger®

Цитата: Yworld_garry от 09 января 2015, 16:32:31
Вот скриптик http://fineuploader.com/index.html две лицензии коммерческая и простая.
Мутная лицензия, толком не работает в "старых" браузерах типа Opera12.

Цитировать
Кстати сразу в коробке автоматом на амазон загрзка, что подойдет большинству. Бесплатно не много дают 5 гигов и что то там по запросам, но платные так же копейки.
Amazon S3 хорош для хранения, а не раздачи. А то пробежит толпа ботов по форуму и накапает копеечных запросов на килобаксы.



Yworld_garry

вот прикольный для профиля или приспособить под что угодно.... http://www.9lessons.info/2013/08/multiple-ajax-image-upload-refreshing.html
там есть версия по свежее, генерит сразу несколько размеров для использования.

ЦитироватьAmazon S3 хорош для хранения, а не раздачи. А то пробежит толпа ботов по форуму и накапает копеечных запросов на килобаксы.

Амазон только что посмотрел и что то да с запросами как то там жестко.