Есть папка “Site”, в ней лежат куча фотографий (*.jpg) с именами 000001.jpg, 000002.jpg, 000003.jpg и т. д.
Требуется:
Расшарить папку “Site” 1 раз, а не каждую фотографию в отдельности
Получить доступ к каждой фотографии по “прямой ссылке”, чтобы на Ubuntu можно было выполнить комманду wget (пример): # wget https://domain.com/s/P8PPk87BstqmK5o/preview/000004.jpg
Варианты, которые я попробовал:
Расшаривание конкретной фотографии позволяет получить прямую ссылку. https://domain.com/s/P8PPk87BstqmK5o/preview
Но автоматически подставить переменную (имя файла) 000001.jpg невозможно.
Можно попробовать :
Для начала надо убрать все файлы картинки с папки Site и саму папку стереть.
Потом создать папку снова и Расшарить папку её ну а потом залить фотки снова .
Когда придет письмо там должны быть прямые ссылки.
Думаю что так должно получиться, хотя есть нюанс как с wget пройдёт авторизация ?
Может что-то другое нужно?
Но есть идея вроде бы!
В настройках есть вариант : Внешние хранилища и там есть FTP,SFTP, WebDAV.
Если подключить одно хранилище куда надо кидать картинки с командой wget то его можно подключить сразу туда .
Это я думаю лучший вариант.
Прямые ссылки хорошо работают только для авторизованных пользователей. Создай пользователя wget и расшарь ему папку Site. Тогда ты сможешь забирать файлы по прямой ссылке, только не забудь аторизоваться указав имя и пароль.
Все расшаренные ссылки видно в описании папки или файла, все их я перепробывал и даже те, которые находятся внутри когда уже открываешь картинку.
По поводу внешних хранилищ, тоже как вариант рассматриваю такое подключение, только немного наоборот, подключиться к webdav самого Nextcloud иначе прейдется еще лишний сервис поднимать на конечном серваке.
Да, попадалась на глаза инфа такая.
Могли бы вы описать поподробнее?
Допустим я создал отдельного пользователя. Вы предлагаете дальше качнуть клиента nextcloud и подключиться к папке? Или подключить как сетевую шару по WebDav? Каким образом я должен авторизоваться?
Так же ты можешь открыть “подробности” файла и там скопировать прямую ссылку на файл/папку https://YOURSERVER/index.php/f/1101783. И это тоже будет работать с wget-ом при предоставлении имени и пароля.
Добавлю что это работает независимо от внешняя это шара, или внутренняя NC.
Пользователя создавать тоже не обязательно, можешь пользоваться своим текущим. При двух факторной авторизации создай пароль приложения, который и скармливай wget-у.
Попробуй просто webdav подключить к NC, или его конкретной папке.
Спасибо за подробное объяснение.
Вообще я wget привел для примера. На самом деле мне эти пути нужны для экспорта в интернет магазин из CSV файлика, в котором лежат пути до картинок.
Выводить в открытом виде логины пароли, пусть даже только для чтения не очень хочется хотя вот этот вариант очень интересен: wget https://TEST:TestPass@YOURSERVER/remote.php/webdav/Shared/ApplicationXXXX.pdf
Благо сервак личный поэтому попробую к веб-серверу подключить по webdav NC.
И тем не менее вопрос остается открытым, до тех пор пока не удастся разработать вариант, который не будет требовать логинов и паролей и при этом можно будет запихнуть в ссылку имена файлов для того чтобы автоматически генерировать имена в CSV файлике.
Может в 14 версии есть такой механизм?
Ну так бы сразу и сказал. Тебе нужно расширить папку/файл по ссылке. Переходя по ней ты увидишь окно с содержимым и кнопку скачать. Т.е. требуется действие от пользователя, НО если добавить в конце пути (если не изменяет память)
Я тоже как-то методом тыка нашел эту ссылку у себя и был рад, что она работает в Гугл таблицах (об этом я писал в первом посте).
Выглядит она вот так: https://domain.com/s/b37j9Lxi9LkR4ft/download?path=%2F&files=000001.jpg
Только проблема в том, что wget ее не может скачать. Он качает файлик с названием “download?path” … да и бог бы с названием, так и размер у этого файлика явно не картинки. И сайт соответственно тоже не может его выкачать. Я поэтому эту тему и поднял.
Запускал монтирование от root. Был нюанс, что не хотел читать пароли из файла ~/.davfs2/secrets, но из другого файла /etc/davfs2/secrets все прочитал.
Потом несколько раз примонтировалось и все было видно, через несколько подключений туда сюда начал писать ошибку типо “сервер временно недоступен” именно сервер, а не ресурс, но с серваком все было в порядке. Попытался ребутнут сервак и сервак вобще помер, я так подозреваю не смог автоматом примонтировать точку WebDav, хотя очень странно, что сервак после ребута меня пытался принудительно загнать с режим обслуживания и требовал пароль рута.
Были еще нуансы в том, что как-то долго все показывается через WebDav, помню и на винде не сильно это радовало, и куча народа на это жаловались в инете.
В понедельник буду пробовать просто установить клиента nextcloud и включить синхронизацию, пусть просто выкачивает на себя, но надо будет поиграться с путями, чтобы картинки на сайте не дублировались при импорте товаров.
Все равно идеальным вариантом остается конечно просто вариант расшарить папку 1 раз и потом получать из нее файлы по прямым ссылкам и приэтом эти ссылки были предсказуемыми и менялось только имя файла.
Если у кого-то еще есть идеи, с радостью потестирую.
downloads это не проблема, проблема в том, что я немогу автоматически генерировать эти ссылки в гугл таблицах, потомучто линк не привязан ни к какой логике, просто случайная генирация символов, а я хотел привязать генерацию к артикулу товара и просто в папку класть картинки уже с нужным именем.
По поводу наконце /download может у тебя другая версия Nextcloud? Я в первом топе свою писал.
Еще у тебя в линке есть index.php, я делал красивые линки себе … можешь погуглить pretty links nextcloud.
Вот еще такая идея:
Зачем тебе линки постоянно генерировать? Создай Х файлов, скажем 10. Расшарь и получи 10 линков на них. Теперь ты можешь менять содержимое каждого из 10 файлов, а линк останется прежним. Добавляй /download в конце и будет тебе счастье.
У меня сейчас NC 14.
Если ты вообще по хардкоркору хочешь, то нужно создать хук (или парсер бота) в mysql чтоб выплевывал эти линки для тебя, или ты можешь редактировать их в БД и получать любой результат.
Вообще не понятно что именно ты пытаешься решить, если твой NC часть бэкэнда то первое решение с паролями должно работать на ура. Если твой NC часть фронтэнда, то генерь линки заранее, а содержимое файлов меняй. Далее без игр с БД не обойтись.
ОБНОВЕЛНИЕ:
Я нашел что ты хочешь: расшариваешь папку по ссылке и потом все файлы в ней доступны по прямой ссылке, например для OST Dimon:
Все верно именно это я и хочу. Третий раз говорю, что данную ссылку понимает только Гугл Таблица. Ни в wget, ни модуль импорта в интернет-магазин на Opencart не могут загрузить картинку по этому линку, вот я и ищу альтернативу. Качается файлик большого размера и это не картинка, а что-то другое.
Попробуй выполнить у себя команду, может в 14 версии, что-то исправили: wget https://YARSERVER/index.php/s/X6t2BKe6zcAiegs/download?path=/Audio&files=OST_Bumer_-_Dimon.mp3
ссылки не отличаются, просто у тебя символы между path и files закодированы по другому.
Как ты обратил внимание на скриншоте имя файла не совсем приятное, но это проблема wget. Ссылку брал просто из шары (т.е. открыл расшаренную папку по ссылке в приватном окне):
Да, действительно wget качает, но когда я обрамляю весь путь в кавычки и гугл таблицы и модуль импорта вообще перестает воспринимать путь как ссылку на картинку. Я вот подумал есть же спец символы типо слеша или коды символов, которые могли позволить обрамлять не всю ссылку в кавычки, а только эти спецсимволы ?=&%
Т. е. вместо ссылки https://domain.com/s/b37j9Lxi9LkR4ft/download?path=%2F&files=000001.jpg
или ссылки с кавычками:
“https://domain.com/s/b37j9Lxi9LkR4ft/download?path=%2F&files=000001.jpg” получить ссылку без спецсимволов, а точнее их точечным выделением, чтобы начало и конец ссылки не изменилось, т. е. остался виден протокол https и конец . jpg: https://domain.com/s/b37j9Lxi9LkR4ft/download\?path\=\%2F\&\;files=000001.jpg
Только я не знаю как этого добиться. Может ты подсказать сможешь?
Я не про гугл таблицы, я говорил про php, т. к. модуль, которым я пользуюсь написан на php.
Спасибо за помощь, завтра буду играться, чтоже не нравится php модулю и как ему скормить этот путь чтобы он не скачивал целый архив папки аналогично wget без использования ковычек.
https://domain.com/s/b37j9Lxi9LkR4ft/download скачает полный архив папки. Только без дополнительных параметров wget оставит имя файла download, так что переименуй его в files.zip и все, или открывай как архив напрямую.