You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter 4 如何自定义下载文件名并保留正确文件扩展名

解决CodeIgniter 4下载文件自定义文件名并保留扩展名的方案

直接修改为以下代码即可:

public function download($payment_id){
    $invoicePaymentModel = new InvoicePaymentModel();
    $file = $invoicePaymentModel->find($payment_id);
    
    // 提取原文件扩展名
    $originalFileName = $file['payment_proof'];
    $ext = pathinfo($originalFileName, PATHINFO_EXTENSION);
    // 拼接自定义文件名+原扩展名,可自行调整前缀规则
    $customFileName = "你需要的自定义文件名" . "." . $ext;

    $filePath = 'uploads/'.$originalFileName;
    // 可选优化:增加文件存在判断,避免异常报错
    if (!file_exists($filePath)) {
        throw new \CodeIgniter\Exceptions\PageNotFoundException("请求的文件不存在");
    }

    return $this->response->download($filePath, NULL)->setFileName($customFileName);
}

核心逻辑说明:

  • 用PHP原生函数pathinfo()配合PATHINFO_EXTENSION参数,可直接从数据库存储的原文件名中提取出后缀,jpg、jpeg、pdf、png等常见格式都能正常识别
  • 把自定义的文件名前缀和提取到的扩展名拼接后,再传给setFileName()方法即可实现需求
  • 你可以根据业务需求调整自定义文件名的生成规则,比如拼接付款单编号、客户ID等业务字段,只要最后带上提取到的扩展名即可

内容的提问来源于stack exchange,提问作者wing11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:54:04