php - "file_get_contents()"仅返回第一个 block (WebDAV)

标签 php webdav chunked-encoding

我是一名学生,刚接触 PHP(以及一般的 Web 开发),正在尝试使用我大学的 WebDAV 服务器编写一个简单的界面。

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

据我所知,可能的罪魁祸首是服务器正在使用分块传输编码(这是有道理的),这让我相信我必须读取数据流,而不是单个文件/ block (再说一遍,我对此很陌生)。如果是这样,我不确定如何实现这一点。

我的理解是 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 应用程序来帮助初级学生学习编码,而这个插件将使他们可以轻松地发布自己的网站基于浏览器的代码编辑器/迷你 IDE!

干杯!

最佳答案

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

关于php - "file_get_contents()"仅返回第一个 block (WebDAV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29322346/

相关文章:

php - 如何通过 WebDAV 部署 git 版本的 Web 应用程序?

python-3.x - Python请求: chunked post request

libevent2 中的分块响应

Javascript onclick 函数不适用于 HTML 标题

php - 无法将 JSON.parse 与 json_encode 的结果一起使用

用于解析标签的 php preg_match 模式

php - 根据URL字符串显示内容

c# - webdav WebClient.Upload (401) 未经授权

java - Java 中的 Apache mod_dav XML 尾随内容 SAX 解析器错误

nginx - 启用Nginx分块传输编码