有这么一个场景:
用户上传一个文件(file.txt), 为了避免重名, 我将其重命名了 - 20100410001.txt, 然后在下载页面我提供一个 <a></a>, 把 href 直接指向服务器上的路径 xxx/xxx/20100410001.txt, 当然下载没有任何问题但是我想了想, 当其他用户下载这个文件, 得到20100410001.txt会很无厘头, 如果下载时的名字是 file.txt (上传用户给的名字肯定比一串数字更加有含义), 这个可不可以实现呢? 上传文件的信息都保留在数据库中 - 原文件名, 大小等等信息都有, 但是不知道如何来做这个手脚, 谢谢大家!

解决方案 »

  1.   

    我记得是可以的。用header函数指定下载文件名。<a></a>这里的href要链接到一个php文件。
      

  2.   

        
        header('Content-Description: File Transfer');    
        header('Content-Type: application/octet-stream');    
        header('Content-Disposition: attachment; filename=yourfilename');    
        header('Content-Transfer-Encoding: binary');    
        header('Expires: 0');    
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');    
        header('Pragma: public');    
        header('Content-Length: ' . filesize($file));        
        readfile($file);    
        exit;
      

  3.   

    非常感谢2位!!我在 http://topic.csdn.net/u/20100410/17/b738673d-4b9c-4718-8e6a-0010b0f78580.html 有一篇一样的帖子, 2位可以回复一下, 我给你们分