Я студент, новый для PHP (и веб-разработка в целом), и пытаюсь написать простой интерфейс с сервером WebDAV моего колледжа.«file_get_contents()» возвращает только первый фрагмент (WebDAV)
Следующий код (с соответствующими учетными данными и адресом), в котором используется плагин HTTP WebDAV Client, найден (https://github.com/pear/HTTP_WebDAV_Client), успешно возвращает первые 8k данных из файлов .txt/.html/.js, которые я пробовал это с, но не более.
Из того, что я могу сказать, вероятным виновником является то, что сервер использует кодирование с кодировкой передачи (что имеет смысл), что заставляет меня полагать, что мне придется читать в потоке данных, а не в одном файле/chunk (опять же, я новичок в этом). Если это так, я не уверен, как это сделать.
Я понимаю, что 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);
*/
}
Я надеюсь, что этот вопрос не слишком глуп:/Я пытаюсь написать веб-приложения, чтобы помочь студентам интро уровня научиться кода, и этот плагин будет сделать это очень легко для них, чтобы опубликовать их собственные веб-сайты из редактора кода на основе браузера/mini-IDE!
Cheers!
http://php.net/manual/en/ref.stream.php – adeneo
@adeneo - Должен ли я предположить, ответ на мой вопрос в том, что стандартные операции с файлами не будут работать в потоках с несколькими каналами? Я был так взволнован, что имел (в основном) работу с простыми командами fopen()/fread(), я полагаю, что я не думал идти совсем по другому пути. –