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

