时间:2021-07-01 10:21:17 帮助过:14人阅读
之后解决。后来在下载时存储的文件名为乱码,同样添加这个code解决。但是下载的文件里面的中文就成乱码了。我用txt文本测试,英文没问题,UTF-8格式的文本也没问题,默认的ANSI就成乱码,当然上传word文件也是乱码。大家帮忙看看应该怎么改,不知道是传到服务器就是乱码,还是下载下来格式没转换,我的数据库是UTF-8编码的,母版页也是UTF-8编码。
- mysql_query("SET NAMES 'utf8'");
输出文件内容
- <!--?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>
- <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>
- //