@Aricus

Как скачать файл из запароленной папки в локальной сети?

Есть сайт в локальной сети XAMPP, и запароленная папка, которая должна быть хранилищем загружаемых файлов, которая находится на другом компьютере в той же локальной сети. Мне нужно иметь возможность скачивать оттуда файлы, загружать файлы, а также создавать и удалять папки. Открыты протоколы: WebDAV, Web Access (HTTP/HTTPS), Apple Filling Protocol, Bluetooth, NFS, rsync. Сейчас пытаюсь научиться хотя бы скачивать файлы. Через WebDAV можно работать через sabre/dav, но у них нет документации, и я не понял, как сделать то, что мне нужно. Нашёл такое решение на curl, но оно, судя по ошибкам не приспособлено для локальной сети (кое-что за***):
$urlSys = '//192.***.***.***/manage/shares/TEST_P/абв.xlsx';
$url = 'http://192.***.***.***/manage/shares/TEST_P/абв.xlsx';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERPWD, "***:***"); // Логин и пароль аккаунта windows, имеющий доступ к папке
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
$fp = fopen($urlSys, "w"); // Строчка 24
fwrite($fp, $output);
fclose($fp);
curl_close($ch);

Warning: fopen(//192.***.***.***/manage/shares/TEST_P/абв.xlsx): failed to open stream: No such file or directory in ***\xampp\htdocs\***\test.php on line 24
Warning: fwrite() expects parameter 1 to be resource, boolean given in ***\xampp\htdocs\***\test.php on line 25
Warning: fclose() expects parameter 1 to be resource, boolean given in ***\xampp\htdocs\***\test.php on line 26
  • Вопрос задан
  • 271 просмотр
Пригласить эксперта
Ответы на вопрос 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Используйте NFS https://www.digitalocean.com/community/tutorials/h...
Удалённую шару монтируете локально и можете читать, писать или отдавать на скачивание как если бы эти файлы были в папке на сервере локально.
Ответ написан
@rPman
Если не ставить задачу полной симуляции samba клиента на php то придется авторизовывать и подключать шару перед ее использованием, запустив штатную утилиту windows:
net use \\machine\share\ password /user:username /persistent:no

а в php тогда открывать эту шару как обычно (внимание, путь писать с разделителями '\' в строковых константах его нужно дублировать).
fopen('\\\\machine\\share\\path\\file','r')должны работать все методы включая glob и другие.
по окончании сессию можно дисконнектить
net use \\machine\share\ /delete

Авторизация не шустрая, не стоит это делать каждый раз при открытии файла, если это нужно делать часто и быстро.

p.s. пока идет скачивание, пользователь, знающий про эту шару, сможет ее читать, так как авторизация идет на всю сессию пользователя windows, правда шара не будет подключена как буква диска, так что никак себя не проявит в интерфейсе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы