【发布时间】:2013-12-20 18:26:52
【问题描述】:
我正在尝试让它检索服务器上的图像文件,但如果图像文件的名称中有空格,它将不起作用..例如, dead 和 air 之间有空格,即使我在添加 %20 后对其进行了转义,该函数返回一个空字符串.. 但如果它是一个名称中没有空格的文件,例如 'http://www.m.trialsite.com/images/thumb/Espresso.jpg';它会起作用的! ..我哪里错了?
$filename = 'http://www.m.trialsite.com/images/thumb/dead air.jpg';
function readfile_chunked($filename,$retbytes=true) {
$chunksize = 1*(1024*1024); // how many bytes per chunk
$buffer = '';
$cnt =0;
// $handle = fopen($filename, 'rb');
$filename = str_replace(' ','%20',$filename);
$handle = fopen($filename, 'rb');
if ($handle === false) {
return false;
}
$filename = str_replace(' ','%20',$filename);
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer; var_dump($buffer); exit;
ob_flush();
flush();
if ($retbytes) {
$cnt += strlen($buffer);
}
}
$status = fclose($handle);
if ($retbytes && $status) {
return $cnt; // return num. bytes delivered like readfile() does.
}
return $status;
}
【问题讨论】:
-
对远程文件使用本地文件操作是一个巨大的问题,并且有一些像这样完全不可预测和无法处理的怪异现象,我希望 PHP 永远不会实现这些包装器。使用 cURL。
-
出于好奇:您可以直接在浏览器中打开文件吗?
-
是的,我可以在浏览器上看到它..