我想使用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()
,...),但是结果是相同的。
答案 0 :(得分:0)
这似乎符合预期,请参见https://www.php.net/manual/en/function.readfile.php以获得以下文本:
如果fopen,则可以将此功能用作URL的文件名 包装器已启用。有关如何操作的更多详细信息,请参见fopen()。 指定文件名。请参阅支持的协议和包装以了解 链接到有关各种包装程序具有哪些功能的信息, 有关其用法的注释,以及有关任何预定义变量的信息 可以提供。
根据文档,您必须启用fopen包装器才能使这些(面向文件的)API在网络上工作