Есть галерея, установленная на домашнем сервере, который доступен через Инет.
Есть огромный архив фотографий (примерно 25 Гб), расположенный на одном из дисков на том же сервере.
Начинаем создавать альбомы и загружать туда фотки и помимо превьюшек и фоток норм.размера получаем дубоирование фотографий в исходном размере в соответствующей папке галереи :) Вопрос: зачем?
Гораздо удобнее было бы иметь опцию, с помощью которой можно было бы указать, что источник фотки расположен на локальном ресурсе сервера (т.е. всегда доступен серверу). При этом достаточно будет создать маленькие файлы превью и фотки норм.размера (опционально), и сохранить в базе локальный путь к исходному файлу фотографии на локальном диске. При дальнейшем просмотре фотографий галереи пользователями при необходимости загрузки исходного файла фотографии автоматически искать его (файл) по сохраненному в базе пути.
Уважаемые профи и гуру CPG! Если подскажете где и что в коде можно поправить, чтобы получить такую логику работы, буду очень признателен и попробую сделать сам, хотя не слищком хорошо знаю PHP.
Если кто-либо из вас возьмется и сделает такую опцию во всеми любимом продукте, думаю она многим пригодится, а не только мне. Возможет также вариант договориться лично о разумном вознаграждении за потроченное время.
С надеждой на понимание жду ваших комментариев.
В коде придется делать слишком много правок и вы потеряете возможность быстрого обновления версии галереи.
Есть другой путь - групповое добавление файлов.
Переносите все свои папки с фотки в папку albums, потом через групповое добавление добавляете в галерею фото из каждой папки. Если не ошибаюсь при этом фото в папке остается на месте, а в папке юзера создаются только малоразмерные копии.
Интересное предложение, надо попробовать.
Если прокатит, то в идале можно данную логику немного доработать, чтобы можно было делать групповое добавление не только из папки albums, а из любой выбираемой локальной папки сервера с сохранением пути к ней в настройках, как вариант.
По поводу быстрого обновления - не проблема, могу посидеть какое-то время на одной версии.
В следующей версии, конечно, придется снова руками править.
Попробовал на версии 1.4.26 (stable) - не работает. Создал свою папку в albums и положил туда фотки. Зашел в "групповое добавление файлов" - получаю сообщение:
QuoteВ папке "albums" отсутствуют созданные Вами папки.
Убедитесь, что Вы создали хотя бы одну свою папку внутри папки "albums" и загрузили в неё по FTP свои файлы.
Вы недолжны ничего загружать в папки "userpics" и "edit", они зарезервированы для http загрузок и внутренних нужд.
Извиняюсь, не хотела работать при выбранной по умолчанию опции "встроенный проводник (рекомендуется) - да".
После выбора варианта "нет" все заработало. При таком варианте загрузки действительно исходный файл никуда не копируется, а превью и нормал варианты создаются в той же папке. Вариант интересный. Вот если он еще позволял указать в настройках другую локальную папку на сервере - задача была бы решена.
В существующем варианте это означает, что мне надо либо копировать в эту папку весь архив фотографий, либо выборочно только для загрузки в галерею, но все равно создавать копию исходных файлов, расположенных на другом диске.
С другой стороны, даже если будет возможность указать другую папку, т.е. в моем случае папку с архивом всех альбомов фотографий, зачем ее засорять файлами с измененным размером картинки (превью и норм)?
Поэтому возвращаемся к исходной постановке задачи, т.е. опциональной возможности загружать фотки из другой (произвольной) локальной папки на сервере без копирования файла с исходным размером картинки.
Какие еще мысли?
попробуй изменить директорию альбома в настройках Конфигурация>>>Настройки файлов>>>директория альбома
Дальше нужно в код смотреть, но мне кажется что галерея в любом случае использует относительные пути. Т.е. максимум что удастся сделать, это выбирать файлы в пределах папок вебсервера.
Попробуйте поставить на компе coppermine helper и поиграться с ним, не знаю может он вам помочь или нет, сам не пользовался. Или ищите другие загрузчики для галереи.
Насколько я понимаю данная настройка указывает общую директорию, в которой система работает, т.е. при ее изменении все новые папки альбомов пользователей, малоразмерные копии файлов, и т.д. Это не очень интересно.
Кроме того там указывается путь к папке относительно корневой директории. Как в этом случае указать другой локальный диск?
Насчет других загрузчиков - спасибо, буду смотреть. А что это за coppermine helper?
Гугл подскажет или поиск по форуму)
Думаю это можно решить с помощью .htaccess или виртуальными хостами на веб сервере, или через Alt-F6 в FAR'е
Quote from: MISHA on May 23, 2010, 08:17:11 PM
Думаю это можно решить с помощью .htaccess или виртуальными хостами на веб сервере, или через Alt-F6 в FAR'е
А можно попросить Вашу мысль изложить немного поподробнее...
Вроде как так, в общем нужно побольше почитать.
Перед всеми виртуальными хостами должен стоять код:
<VirtualHost *:80>
ServerName default
</VirtualHost>
<VirtualHost *:80>
ServerAdmin mail@mail.ru
DocumentRoot I:\gallery
ServerName gallery
ServerAlias *.sait.ru
ErrorLog logs/sait.ru/sait.ru-error.log
TransferLog logs/sait.ru/sait.ru-access.log
</VirtualHost>
<VirtualHost *:80>
DocumentRoot I:\gallery\albums\
ServerAlias *.sait.ru/gallery/albums/test
</VirtualHost>
Может я, конечно, совсем чайник, но, извините, пока не понимаю, что это даст...
Смысл в том чтобы галерея видела альбом тест у тебя в папке /gallery/albums/ а сама папка будет находится F:\gallery\albums\test
Поправка:
<VirtualHost *:80>
DocumentRoot F:\gallery\albums\test
ServerAlias *.sait.ru/gallery/albums/
</VirtualHost>
Лучше вам почитать это http://www.apache.ru/faq/ и это http://www.dmsdesign.ru/apache3.html
Пробовал подключать папку с архивом фотографий как виртуальную папку (например, /gallery/albums/test), не работает.
Т.е. галерея не воспринимает ее как папку внутри /albums и, как следствие, не выводит.
Windows - зло в отношении виртуальных папок и т.п.
Проблема не в том, видит ли галерея папку или нет.
Проблема в том, видит ли WEB-сервер папку или нет.
Вам нужно сначала заставить WEB-сервер выдавать содержимое папки /gallery/albums/test/ в строке браузера, а уже потом работать с галереей.
Т.к. Windows - это не моя родная среда для WEB-приложений - я вам не помогу.
В UNIX подобное делается элементарно.
Да, именно этим я и занимаюсь, т.е. пытаюсь получить физический путь к папке по ее алиасу. К сожалению, PHP не умеет этого делать встроенными средствами. В то время как в ASP это делается на раз с помощью Server.MapPath(). Отсюда возникает задача: как при выполнении кода PHP использовать данную команду, например, на JScript, с передачей ей алиаса в качестве параметра и возвратом физического пути в качестве результата? Может подскажете, т.к. я не очень владею такими фишками в PHP.
В PHP есть такая переменная как $_SERVER:
http://php.net/manual/en/reserved.variables.server.php