& Quot; file_get_contents () & Quot; возвращает только первый чанк (WebDAV)

Я студент, плохо знакомый с PHP (и веб-разработкой в ​​целом), и пытаюсь написать простой интерфейс с сервером WebDAV моего колледжа.

Следующий код (с соответствующими учетными данными и адресом), который использует обнаруженный мной плагин HTTP WebDAV Client (https://github.com/pear/HTTP_WebDAV_Client), успешно возвращает первые 8 КБ данных из файлов .txt / .html / .js, с которыми я пробовал, но не более.

Из того, что я могу сказать, вероятный виновник состоит в том, что сервер использует кодирование передачи по частям (что имеет смысл), что приводит меня к мысли, что мне придется читать в потоке данных, а не в одном файле / чанке (опять же, Я новичок в этом). Если это так, я не уверен, как это сделать.

Насколько я понимаю, cURL, вероятно, будет самым быстрым способом сделать это, но я не думаю, что Dreamhost включил cURL для php.

//this loads the HTTP_WebDAV_Client plugin:
//  https://github.com/pear/HTTP_WebDAV_Client
require_once "HTTP/WebDAV/Client.php";

//this is for testing purposes only (for obvious reasons)
$user = $_GET['user'];
$pass = $_GET['pass'];
$fileName = $_GET['fileName'];

//actual address obscured
$dir = "webdavs://" . $user . ":" . $pass . "@webfs.xxx.com/main/hcwebdav/";

$file = fopen($dir.$fileName, "rb");
//$content;

if (!$file) {

die("Error opening file :( $user $pass");

} else {
//This returns only the first chunk:
echo file_get_contents($dir.$fileName);

//this has the same behavior
/*
while ($line = fread($file, 8192)) {
$content .= $line;
}
echo $content;

fclose($file);
*/

}

Я надеюсь, что этот вопрос не слишком глуп: / Я пытаюсь написать веб-приложения, чтобы помочь студентам начального уровня научиться кодировать, и этот плагин позволит им очень легко публиковать свои собственные сайты из браузера. основанный редактор кода / мини-IDE!

Ура!

2

Решение

Мои предложения исходят из используемого вами пакета и вашей проблемы с ним, но SabreDAV — самый популярный WebDAV в сообществе PHP, так почему бы не использовать его вместо этого.

2

Другие решения

Других решений пока нет …