表单上传文件,图片可选可不选,使用request对象获取所有图片时报错;报错信息如下:
$file = $request->file('img');
postman请求
按照手册应该返回null 实际报错信息为:
控制器中打印$request->file('img'); 请求参数中包含file类型字段 img,img1,img未选择图片!
大佬说,这个不算bug的。
很多场景表单中文件都是非必填项啊~
手册上写的是,$request->file('avatar');如果文件存在的话则返回对应文件的webman\Http\UploadFile实例,否则返回null。
什么浏览器
使用的Postman,form-data请求
这边浏览器测试和postman测试没出现你说的问题, 截图下postman界面吧,看下参数是怎么传的
已经修改问题,截图如上
从报错看是postman没传递content-type数据导致的,我这没复现这个问题,可能是我这postman版本和你的不一样。 你先本地修改下vendor/workerman/workerman/Protocols/Http/Request.php ,将 parseUploadFile 方法里
vendor/workerman/workerman/Protocols/Http/Request.php
$file = [ 'name' => $match[2], 'tmp_name' => $tmp_file, 'size' => $size, 'error' => $error, 'type' => null, ];
改成
$file = [ 'name' => $match[2], 'tmp_name' => $tmp_file, 'size' => $size, 'error' => $error, 'type' => '', // 这里null改成'' ];
目前看这个问题可能只出现在某些版本的postman上,浏览器没有问题,这个将在下个workerman版本做兼容。
调整后没有问题了,postman版本Version 9.24.2
感谢大佬
大佬说,这个不算bug的。
很多场景表单中文件都是非必填项啊~
手册上写的是,$request->file('avatar');如果文件存在的话则返回对应文件的webman\Http\UploadFile实例,否则返回null。
什么浏览器
使用的Postman,form-data请求
这边浏览器测试和postman测试没出现你说的问题,
截图下postman界面吧,看下参数是怎么传的
已经修改问题,截图如上
从报错看是postman没传递content-type数据导致的,我这没复现这个问题,可能是我这postman版本和你的不一样。
你先本地修改下
vendor/workerman/workerman/Protocols/Http/Request.php
,将 parseUploadFile 方法里改成
目前看这个问题可能只出现在某些版本的postman上,浏览器没有问题,这个将在下个workerman版本做兼容。
调整后没有问题了,postman版本Version 9.24.2
感谢大佬