thinkphp实现文件下载函数
来源:互联网 发布:知乎的提问不能删除 编辑:程序博客网 时间:2024/06/11 02:10
thinkphp实现文件下载函数
验证用户权限后调用此函数可以下载文件,文件可以放在任意位置。客户端不会出现乱码不会知道所下载文件真实路径。1./**2. * 下载文件3. * @param string $file4. * 被下载文件的路径5. * @param string $name6. * 用户看到的文件名7. */8. function download($file,$name=''){9. $fileName = $name ? $name : pathinfo($file,PATHINFO_FILENAME);10. $filePath = realpath($file);11. 12. $fp = fopen($filePath,'rb');13. 14. if(!$filePath || !$fp){15. header('HTTP/1.1 404 Not Found');16. echo "Error: 404 Not Found.(server file path error)<!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding -->";17. exit;18. }19. 20. $fileName = $fileName .'.'. pathinfo($filePath,PATHINFO_EXTENSION);21. $encoded_filename = urlencode($fileName);22. $encoded_filename = str_replace("+", "%20", $encoded_filename);23. 24. header('HTTP/1.1 200 OK');25. header( "Pragma: public" );26. header( "Expires: 0" );27. header("Content-type: application/octet-stream");28. header("Content-Length: ".filesize($filePath));29. header("Accept-Ranges: bytes");30. header("Accept-Length: ".filesize($filePath));31. 32. $ua = $_SERVER["HTTP_USER_AGENT"];33. if (preg_match("/MSIE/", $ua)) {34. header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');35. } else if (preg_match("/Firefox/", $ua)) {36. header('Content-Disposition: attachment; filename*="utf8\'\'' . $fileName . '"');37. } else {38. header('Content-Disposition: attachment; filename="' . $fileName . '"');39. }40. 41. // ob_end_clean(); <--有些情况可能需要调用此函数42. // 输出文件内容43. fpassthru($fp);44. exit;45. }
0 0
- thinkphp实现文件下载函数
- thinkphp实现文件下载
- thinkphp控制器实现隐藏文件路径下载
- thinkphp 的文件下载
- ThinkPhp文件下载问题
- thinkphp 的文件下载
- thinkphp 文件下载
- thinkphp实现当前页面点击下载文件实例
- thinkphp 文件下载 文件下载php
- thinkphp文件上传与下载
- thinkphp实现文件上传
- PHP header()函数实现文件下载
- PHP header()函数实现文件下载功能
- php使用header函数实现文件下载
- 使用Thinkphp自带HTTP类的功能实现文件下载
- ThinkPHP实现文件伪静态
- [php] thinkphp基于Http类 下载文件
- Thinkphp ajax异步下载excel文件
- android:padding和android:margin的区别
- 内存泄漏之内部类handler()
- mong 备份和恢复
- 性能测试总结(二)---测试流程篇
- Android性能优化之常见的内存泄漏
- thinkphp实现文件下载函数
- UVALive 6937 The Imp
- matlab1
- before&&after
- IOS 开发中的CALayer与UIView
- hdu5723 Abandoned country
- 性能测试总结(三)--工具选型篇
- opencv将图片组合成视频播放
- unity3d的local和global