Thinkphp3.23下实现文件下载功能

1、thinkphp中有封装好的类,这个再thinkphp/Library/Org/Net/Http.class.php中,我们可以调用这个类快速实现文件下载。

//下载文件
public function test(){
      //调用类
      $Http = new \Org\Net\Http();
      $filename="Public\Uploads\物品表.xlsx";
      $showname="test.xlsx";
      $Http::download($filename, $showname);
}  

然后一调试出现的是“Public\Uploads\物品表.xlsx下载文件不存在!”几个大字,而事实是在该路径下明明躺着一个叫做物品表的东西。
2、原来是编码格式的锅
经过一番折腾,发现原来是编码格式的锅,我设置的代码的编码格式是utf-8,而该excel表默认的编码格式为gb2312。调用iconv函数进行转码。代码如下:

//下载文件
public function test(){
      //调用类
      $Http = new \Org\Net\Http();
      $filename="Public\Uploads\物品表.xlsx";
      $showname="test.xlsx";
      //转码   excel的默认编码格式为gb2312
      $filename=iconv("utf-8","gb2312",$filename);
      $Http::download($filename, $showname);
}  

一调试,搞定。

你可能感兴趣的:(thinkphp)