• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php文件下载乱码有关问题

php 搞代码 3年前 (2022-01-24) 14次浏览 已收录 0个评论

php文件下载乱码问题
我想添加一个文件上传下载功能,由于文件可能较大,所以思路是在数据库中存储文件在服务器上的路径,下载时根据路径读取文件。最开始在上传时页面文件列表显示的中文文件名为乱码,添加了

mysql_query("SET NAMES 'utf8'");

之后解决。后来在下载时存储的文件名为乱码,同样添加这个code解决。但是下载的文件里面的中文就成乱码了。我用txt文本测试,英文没问题,UTF-8格式的文本也没问题,默认的ANSI就成乱码,当然上传word文件也是乱码。大家帮忙看看应该怎么改,不知道是传到服务器就是乱码,还是下载下来格式没转换,我的数据库是UTF-8编码的,母版页也是UTF-8编码。

<?php		<br />function DownloadFile($mineid,$notice=null){<br />	global $smarty;<br />	needLogin();<br />	//session_cache_limiter('private'); <br />	$session=Session::start();<br />	$curUser = $session->curUser;<br />	$logger = new CategoryLogger('log_definition');<br />	if($notice!="auto")notice($notice);<br /><i>·本2文来源gaodai$ma#com搞$代*码网2</i><strong>搞gaodaima代码</strong><br />	$id=$mineid;//要下载文件的ID  <br />	if(!isset($id) or $id=="") die("error:id none");  //定位记录,读出 <br />	$conn=mysql_connect('10.4.16.102','root','abc') or die('Unable to connect .');   <br />    mysql_select_db('greenmine',$conn) or die(mysql_error($conn));<br />	mysql_query("SET NAMES 'utf8'");<br />    $sql=  "select * from file where id=$id";  <br />	$result=  mysql_query($sql);  <br />	if(!$result) die("error:mysql query");  <br />	$num=mysql_num_rows($result);  <br />	if($num<1) die("error:no this recorder"); <br /> <br />	$data=mysql_result($result,0,"file_data");  //文件存储路径<br />	$type=mysql_result($result,0,"file_type");  <br />	$name=mysql_result($result,0,"file_name"); <br />	mysql_close($conn);  <br /><br />	$file_name=$name;<br />	$file_dir=$data;<br />	if   (!file_exists($file_dir))   {   //检查文件是否存在  <br /> 			 echo   "文件找不到";  <br />  			exit;    <br />  	}   else   {  <br />	$filePath = $file_dir;//此处给出你下载的文件在服务器的什么地方   <br />    $fileName = $file_name;   <br />    //此处给出你下载的文件名   <br />    $file = fopen($filePath, "r"); //   打开文件<br /><br />Header("Content-type:application/octet-stream ");<br />Header("Accept-Ranges:bytes ");<br />Header("Accept-Length:   " . filesize($filePath));<br />Header("Content-Disposition:   attachment;   filename= " . $fileName);   <br />       <br />    //   输出文件内容   <br />    echo fread($file, filesize($filePath));   <br />    fclose($file);   <br />    exit;   <br />  }<br />}<br />?>

——解决方案——————–
是文件名乱码,还是文件内容乱码?
你的库中只保存文件名,而文件是独立保存的。不是这样吗
打开文件要 $file = fopen($filePath, “rb“);

供下载的文件名
Header(“Content-Disposition: attachment; filename= ” . $fileName);
要与用户所用操作系统配套


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php文件下载乱码有关问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址