Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么赢了';你没读过这个文件吗?_Php_Php 5.3_Fread - Fatal编程技术网

Php 为什么赢了';你没读过这个文件吗?

Php 为什么赢了';你没读过这个文件吗?,php,php-5.3,fread,Php,Php 5.3,Fread,我试图让它在服务器上检索图像文件,但如果图像文件名中有空格,它将无法工作。。例如,在dead和air之间有一个空格,即使我在添加%20后将其转义,函数也会返回一个空字符串。。但如果它是一个名称中没有空格的文件,如“”;它会起作用的。。我哪里做错了 $filename = 'http://www.m.trialsite.com/images/thumb/dead air.jpg'; function readfile_chunked($filename,$retbytes=true) {

我试图让它在服务器上检索图像文件,但如果图像文件名中有空格,它将无法工作。。例如,在dead和air之间有一个空格,即使我在添加%20后将其转义,函数也会返回一个空字符串。。但如果它是一个名称中没有空格的文件,如“”;它会起作用的。。我哪里做错了

$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; 

}
使用
preg\u替换(“/\s+/”、“\u”、$nome)
重命名文件,然后将其恢复,这样可以正常工作

$directory = '/public_html/testfolder/';//example
if ($handle = opendir($directory)) { 
    while (false !== ($fileName = readdir($handle))) {     
        $newName = preg_replace("/\s+/","_",$fileName); 
        rename($directory . $fileName, $directory . $newName);
    }
    closedir($handle);
}

如果你是这样做的:

$filename = str_replace(' ','%20', 'http://www.m.trialsite.com/images/thumb/dead air.jpg');

在远程文件上使用本地文件操作是一个巨大的难题,并且有一些完全不可预测和无法处理的奇怪之处,我希望PHP永远不要实现这些包装器。使用cURL。出于好奇:你能在浏览器中直接打开文件吗?是的,我可以在浏览器上看到它。我不允许在服务器中更改文件名。查看它是否有助于处理所有其他图像,除非有空间,我想我不允许更改检索图像的方式,这不是个人项目。