我写了一个php函数来将互联网图像复制到本地文件夹,有时效果很好,但有时它只生成一个大小为1257B的无效文件。
function copyImageToLocal($url, $id)
{
$ext=strrchr($url, ".");
$filename = 'images/' . $id . $ext;
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$fp=@fopen($filename, "a");
fwrite($fp, $img);
fclose($fp);
}
注意:传入的$ url有效,有时此功能在第一次失败,但可能在第二次或第三次成功。这很奇怪...... 这需要一些特殊的PHP设置吗?
请帮助我!
我找到了真正的原因:虽然可以在浏览器中打开,但测试图像网址不允许进行程序访问。 我尝试了其他一些图片网址,功能很好。
所以,似乎我需要找到一种方法来处理这种情况。 谢谢你们!
答案 0 :(得分:1)
为什么不打开文件并将其写入磁盘,如下所示:
file_put_contents($filename, fopen($url, 'r'));
这甚至会为你做缓冲,所以你不应该遇到内存问题(因为你在将整个图像写入文件之前将其存储在内存中)