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

Bulletproof 5.0.1版image uploader的setName()函数异常求助

Bulletproof 5.0.1 中 setName() 自定义文件名失效问题

问题现象

使用Bulletproof 5.0.1版本做图片上传时,手动调用setName()设置自定义文件名完全无效,最终生成的仍是随机字母数字组合的文件名。

复现代码

按照官方README里的示例代码调用,代码如下:

require_once  "path/to/bulletproof.php";

$image = new Bulletproof\Image($_FILES);
$image = setName("test"); // 设置无效

 if($image["pictures"])){

   $upload = $image->upload(); 

   if($upload){
     echo $upload->getPath();
   }else{
     echo $image->getError(); 
   }
 }

原因分析

排查后发现setName()被执行了两次:一次是手动传入自定义名称的调用,另一次是Bulletproof类内部通过constraintValidator()函数的调用。但内部这次调用未传入之前已设置好的自定义名称,直接覆盖了手动设置的值,导致最终还是生成随机文件名。

临时修复方案

修改Bulletproof类内部constraintValidator()函数里调用setName()的代码,改为:

$this->setName($this->name);

希望这个临时方案能帮到遇到同样问题的人,也欢迎大家指正我的分析是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:22:50