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
相关产品推荐
相关产品推荐

