PHP readfile始终返回“网络错误”

时间:2019-07-10 12:40:37

标签: php download readfile

我想使用readfile()函数从URL下载图像,但是在完成下载后,返回:

  

错误:网络错误

这是我的代码:

<?php

    $file = $_REQUEST['file'];
    $file_extension = end(explode('.', $file));
    $file_name = end(explode('/', $file));
    $filepath = str_replace('https://example.org/', '', $file);

    header('Content-Description: File Transfer');
    header('Content-Type: image/jpeg');
    header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filepath));
    flush(); // Flush system output buffer
    readfile($filepath);
    exit;

我尝试了不同的方式(fread()fopen(),...),但是结果是相同的。

1 个答案:

答案 0 :(得分:0)

这似乎符合预期,请参见https://www.php.net/manual/en/function.readfile.php以获得以下文本:

  

如果fopen,则可以将此功能用作URL的文件名   包装器已启用。有关如何操作的更多详细信息,请参见fopen()。   指定文件名。请参阅支持的协议和包装以了解   链接到有关各种包装程序具有哪些功能的信息,   有关其用法的注释,以及有关任何预定义变量的信息   可以提供。

根据文档,您必须启用fopen包装器才能使这些(面向文件的)API在网络上工作