我无法在php中下载文件

时间:2014-02-03 09:33:41

标签: php download


警告:fopen(images /):无法打开流: C:\ xampp \ htdocs \ phpsamp \ download1.php 中的行中没有此类文件或目录91
错误 - 无法打开文件。我试图从c:\ xammpp \ htdocs \下载文件 我低于错误

   <?php
    function output_file($file, $name, $mime_type='')
    {

    if(!is_readable($file)) die('File not found or inaccessible!');
    echo "coon";

    $size = filesize($file);
    $name = rawurldecode($name);


   $known_mime_types=array(
"pdf" => "application/pdf",
"txt" => "text/plain",
"html" => "text/html",
"htm" => "text/html",
"exe" => "application/octet-stream",
"zip" => "application/zip",
"doc" => "application/msword",
"xls" => "application/vnd.ms-excel",
"ppt" => "application/vnd.ms-powerpoint",
"gif" => "image/gif",
"png" => "image/png",
"jpeg"=> "image/jpg",
"jpg" =>  "image/jpg",
"php" => "text/plain"
      );

        if($mime_type==''){
    $file_extension = strtolower(substr(strrchr($file,"."),1));
     if(array_key_exists($file_extension, $known_mime_types)){
        $mime_type=$known_mime_types[$file_extension];
     } else {
            $mime_type="application/force-download";
     };
         };


          @ob_end_clean(); 


          if(ini_get('zlib.output_compression'))
          ini_set('zlib.output_compression', 'Off');

           header('Content-Type: ' . $mime_type);
           header('Content-Disposition: attachment; filename="'.$name.'"');
           header('Accept-Ranges: bytes');


         header("Cache-control: private");
           header('Pragma: private');
               header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");


            if(isset($_SERVER['HTTP_RANGE']))
         {
       list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
        list($range) = explode(",",$range,2);
          list($range, $range_end) = explode("-", $range);
            $range=intval($range);
             if(!$range_end) {
                $range_end=$size-1;
              } else {
    $range_end=intval($range_end);
   }

   $new_length = $range_end-$range+1;
    header("HTTP/1.1 206 Partial Content");
    header("Content-Length: $new_length");
   header("Content-Range: bytes $range-$range_end/$size");
       } else {
$new_length=$size;
header("Content-Length: ".$size);
       }


        $chunksize = 4*(1024*1024); 
       $bytes_send = 0;
        if ($file = fopen($file, 'r'))
       {
     if(isset($_SERVER['HTTP_RANGE']))
     fseek($file, $range);

       while(!feof($file) && 
    (!connection_aborted()) && 
    ($bytes_send<$new_length)
      )
       {
    $buffer = fread($file, $chunksize);
    print($buffer); //echo($buffer); // can also possible
    flush();
    $bytes_send += strlen($buffer);
         }
           fclose($file);
          } else
        //If no permissiion
         die('Error - can not open file.');
           //die
          die();
          }
        //Set the time out
         set_time_limit(0);

          //path to the file
          $file_path='images/'.$_REQUEST['hug_a_tree_desktop-background.jpg'];


             //Call the download function with file path,file name and file type
               output_file($file_path, ''.$_REQUEST['hug_a_tree_desktop-                      background.jpg'].'', 'text/plain');?>

1 个答案:

答案 0 :(得分:0)

fopen(images/): failed to open stream: No such file or directory in 
C:\xampp\htdocs\phpsamp\download1.php on line 91

我想如果你看看路径,你会发现自己的错误。文件夹很少位于.php文件中。存储在$ file变量中的值是错误的。

并且不要修改标题......这是不必要的。

哦,并重构你的代码......在我看来这很难读。