2015-03-28 3 views
1

Я студент, новый для 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!

+0

http://php.net/manual/en/ref.stream.php – adeneo

+0

@adeneo - Должен ли я предположить, ответ на мой вопрос в том, что стандартные операции с файлами не будут работать в потоках с несколькими каналами? Я был так взволнован, что имел (в основном) работу с простыми командами fopen()/fread(), я полагаю, что я не думал идти совсем по другому пути. –

ответ

2

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

+1

Отличный; спасибо, Дженс! –