我想知道从php中保存图像的最佳方法.
目前我正在使用
file_put_contents($pk, file_get_contents($PIC_URL));
这不是理想的.我无法使用卷曲.有专门针对此的方法吗?
除非文件非常大,否则使用file_get_contents很好.在这种情况下,你真的不需要把整个东西都拿在内存中.
对于一个大的检索,你可以的fopen远程文件,FREAD,比方说,32KB的时间,并使用fwrite在本地循环,直到所有的文件已被读取.
例如:
$fout = fopen('/tmp/verylarge.jpeg', 'w'); $fin = fopen("http://www.example.com/verylarge.jpeg", "rb"); while (!feof($fin)) { $buffer= fread($fin, 32*1024); fwrite($fout,$buffer); } fclose($fin); fclose($fout);
(为简单起见,没有错误检查!)
或者,您可以放弃使用url包装器并使用类似PEAR的HTTP_Request,或使用fsockopen等滚动您自己的HTTP客户端代码.如果您要维护缓存,这将使您能够执行有效的操作,如发送If-Modified-Since标头远程文件.