php 文件流输出

这段PHP代码展示了如何下载名为'aaa.excel'的文件并处理文件名乱码问题。通过设置HTTP头信息,文件以附件形式下载,并在下载完成后从服务器删除原始文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



public function download(){

    $fileName = trim($_REQUEST['fileName']);

    $outFileName = "aaa.excel";
    $path = './data/uploads/';

    $outFileName = iconv("UTF-8", "GB2312", $outFileName);//解决文件名乱码
    // 设置下载头信息
    header ( "Content-Type: application/vnd.ms-excel" );
    header ( "Content-Disposition: attachment; filename=".$outFileName );

    // 文件流输出到浏览器
    readfile ($path . $fileName);
    // 删除文件
    @unlink($path . $fileName);

}

window.location.href = url;
### PHP 实现文件流下载 为了通过PHP实现安全可靠的文件流下载功能,可以采用如下方法。此方法能够处理不同类型的文件并确保浏览器正确解析和保存这些文件。 首先定义一个函数用于设置HTTP头信息以便告知客户端这是一个要被下载而非显示的内容[^1]: ```php function setDownloadHeaders($filename) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); // 告诉浏览器这是一串字节流而不是HTML文档 header("Content-Disposition: attachment; filename=$filename"); // 设置附件名 header('Expires: 0'); // 防止缓存 header('Cache-Control: must-revalidate'); header('Pragma: public'); } ``` 接着读取目标文件并通过`fpassthru()`或者循环逐块输出数据给用户代理程序(通常是Web浏览器),这样做的好处是可以有效减少内存占用量特别适合大尺寸资源传输场景[^2]: ```php $filePath = '/path/to/your/file.ext'; // 替换成实际路径 if (file_exists($filePath)) { // 检查文件是否存在 $fileName = basename($filePath); // 获取不含目录部分的名字作为默认下载名称 setDownloadHeaders($fileName); $fileSize = filesize($filePath); if ($fileSize !== false && is_int($fileSize / 1024)) { header("Content-Length: $fileSize"); } readfile($filePath); // 输出整个文件到缓冲区 } else { http_response_code(404); // 如果找不到指定位置则返回错误状态码 echo 'File not found'; } ``` 上述代码片段展示了如何利用PHP内置函数完成一次完整的文件流式下载操作流程。值得注意的是,在生产环境中应当加入更多的异常处理逻辑以及安全性验证措施来保护服务器免受恶意攻击影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值