2017-08-04 151 views
0

我在使用apache服务器上的php下载文件时遇到了一些麻烦。当文件被请求时,它确实返回并下载,但是当试图打开文件时,它说该文件可能包含无效字符。我尝试了php.net网站上的代码,仍然得到相同的回应。我的问题是有什么我没有做或不正确的做?我的PHP代码如下。使用PHP下载文件

 //result is filename from db 
    if($result){ 
     $row = $database->fetch_array($result); 
     $file_name = '../uploads/'.$row['filename']; 
     if(file_exists($file_name)){ 
      header("Content-Disposition: attachment; filename=\"$file_name\""); 
      header("Pragma: public"); 
      header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
      readfile($file_name); 
     } 


    } 

回答

0

manual for PHP header()看来,您指定了最终用户的文件名以及服务器的相对路径。

尝试更改此行;

header("Content-Disposition: attachment; filename=\"$file_name\""); 

To;

header("Content-Disposition: attachment; filename=\"$row['filename']\"");