百度和google都翻遍了,试了很多方法还是没能解决。有哪位大哥解决了,帮忙下,
头疼啊。
$fn = array_pop( explode( '/', strtr( $this->filename, '', '/' ) ) );
// $this->filename = fopen($this->filename, "rb");
header( "Accept-Ranges:bytes ");
header('Content-Description: File Transfer');
header( "Pragma: public" );
header( "Expires: 0" ); // set expiration time
header( "Cache-Component: must-revalidate, post-check=0, pre-check=0" );
header( "Content-type:".$this->mineType );
header( "Content-Length: " . filesize( $this->filename ) );
header( "Content-Disposition: attachment; filename=".$fn."" );
header( 'Content-Transfer-Encoding: binary' );
readfile( $this->filename );
头疼啊。
$fn = array_pop( explode( '/', strtr( $this->filename, '', '/' ) ) );
// $this->filename = fopen($this->filename, "rb");
header( "Accept-Ranges:bytes ");
header('Content-Description: File Transfer');
header( "Pragma: public" );
header( "Expires: 0" ); // set expiration time
header( "Cache-Component: must-revalidate, post-check=0, pre-check=0" );
header( "Content-type:".$this->mineType );
header( "Content-Length: " . filesize( $this->filename ) );
header( "Content-Disposition: attachment; filename=".$fn."" );
header( 'Content-Transfer-Encoding: binary' );
readfile( $this->filename );
<script>location.href='1.doc';</script>
或者
<iframe src="1.doc" style="display:none"></iframe>
$fn = array_pop( explode( '/', strtr( $this->filename, '', '/' ) ) );
// $this->filename = fopen($this->filename, "rb");
header( "Accept-Ranges:bytes ");
header('Content-Description: File Transfer');
header( "Pragma: public" );
header( "Expires: 0" ); // set expiration time
header( "Cache-Component: must-revalidate, post-check=0, pre-check=0" );
header( "Content-type:".$this->mineType );
header( "Content-Length: " . filesize( $this->filename ) );
header( "Content-Disposition: attachment; filename=".$fn."" );
header( 'Content-Transfer-Encoding: binary' );
echo '<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">';
readfile( $this->filename );
继续蛋疼,还是不行。测试下载txt文件却不会乱码。还有个问题,不能匹配中文文件名。如在file文件夹下有个 测试.doc。数据库中的记录 file/测试.doc
结果却是:文件不存在。 都改成 ceshi.doc 却可以。这是什么原因?
本机OS是 windows 。服务器是 linux ,都不能识别。
// $this->filename = fopen($this->filename, "rb");
header( "Content-type:".$this->mineType );
header( "Content-Length: " . filesize( $this->filename ) );
header ( "Content-type:application/vnd.ms-word" );
header ( "Content-Disposition:filename=" . iconv ( $fn, "GBK", "UTF-8" ) . ".doc" );
echo '<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">';
readfile( $this->filename );
检测数据库中是什么字符集,PHP脚本是什么字符集。
$this->filename = iconv("UTF-8", "GBK", $this->filename);
if(!is_file($this->filename))echo "fuck";
header("Content-Disposition: attachment; filename=中国.doc");
header("Content-Type: application/unknown");
readfile('/var/www/中国.doc');Apache/2.2.14 (Ubuntu) Server 下测试下载回来的文件没有问题。中国.doc是用openoffice保存成的doc文件,内容就是从这个页面上copy的。
echo '<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">';//这个没用可以去掉
readfile( $this->filename );//这是GBK,如果需要请转码