“file_get_contents()”仅返回第一个块(WebDAV)

时间:2015-03-28 20:39:53

标签: php webdav chunked-encoding

我是一名学生,不熟悉PHP(以及一般的网络开发),我正在尝试用我大学的WebDAV服务器编写一个简单的界面。

以下代码(具有适当的凭据和地址),使用我找到的HTTP WebDAV客户端插件(https://github.com/pear/HTTP_WebDAV_Client),成功返回.txt / .html / .js文件中的前8k数据I& #39;我试过了,但没有了。

据我所知,可能的罪魁祸首是服务器正在使用分块传输编码(这是有意义的),这让我相信我必须读取数据流,而不是单个文件/块(再说一次,我是新手)。如果是这样,我不确定如何做到这一点。

我的理解是cURL可能是最快的方法,但我不认为Dreamhost已经为php启用了cURL。

//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);
        */

    }

我希望这个问题不是太愚蠢:/我试图编写Web应用程序来帮助介绍级学生学习编码,而这个插件会让他们很容易发布他们自己的网站来自基于浏览器的代码编辑器/ mini-IDE!

干杯!

1 个答案:

答案 0 :(得分:2)

我的建议远离您正在使用的软件包以及您的问题,但SabreDAV是PHP社区中最受欢迎的WebDAV,所以为什么不使用它呢。