我把文本文件上传后再下载后发现文件出现错误,以二进制打开文件发现文件头部分多了几个字节,但用记事本打开显示正常!以下是我的代码:
/*****************************************************************/
public function DownLoadWords(){
$file_name = $this->_csvFile;
$file_dir = _TEMP_PATH; 
$file_path = $file_dir . $file_name;
$file = @ fopen($file_path,"r");
$file_size = filesize($file_path);  if (file_exists($file_path) && $file_size > 0) { Header("Content-type: application/vnd.ms-excel");
Header("Accept-Ranges: bytes");
Header("Accept-Length: " . $file_size);
Header("Content-Disposition: attachment; filename=" . $file_name);

while (!feof($file)) {
echo fread($file,$file_size);
} fclose($file);
}
}
/*****************************************************************/
希望高手帮我看看,谢谢!

解决方案 »

  1.   

    上传的过程文件没有发生变化。我的操作是这样的
    首先,我把一个csv文件(file1)上传到服务器上(file2),这时通过二进制检查file1和file2没发现不同。然后把上传后的文件(file2)存到数据库中,最后把数据库中的文件读取出放到一个csv文件中(file3),这时通过二进制检查file3和file1也没有发现不同。但通过上面我给的代码下载file3到本地的file4后,发现问题了。用二进制打开文件发现file4和其他前面的文件不同,头部分多了“EF BB EF EF BB EF”,导致我用excel打开file4文件出现乱码!!这是什么问题啊?该如何解决?另外请问如何以二进制上传?
      

  2.   

    看错了,
    改; $file = @ fopen($file_path,"rb");
    再测一下.
    ftp二进制方式上传