ThinkPHP6 logo上传接口(异步请求)以及商品相册上传接口(多图上传)

参照上传接口文档

请求地址

POST /logo

需进行token认证

示例: http://adminapi.tbyue.com/logo

请求参数

名称 类型 必填 备注
type string 图片类型。商品:goods;分类:category;品牌:brand
logo file logo文件

返回数据

logo文件访问路径

返回示例

"/uploads/goods/20190530/adsdsfsgsds.png"

单文件上传

postman测试

ThinkPHP6 logo上传接口(异步请求)以及商品相册上传接口(多图上传)_第1张图片

书写上传逻辑

 public function index(Request $request)
    {
        // 接收上传的类型
        $type=$request->post('type');
        // 接收文件上传
        $files = $request->file();
        // 设定文件上传的大小
        $fileSize=1024*1024*2;
        try {
            // 验证文件上传的大小、后缀
            validate(['logo'=>'fileSize:'.$fileSize.'|fileExt:jpg,png'])
                ->check($files);
            $file = request()->file('logo');
            // 将图片保存至本地
            $savename= \think\facade\Filesystem::putFile($type,$file);
            // 将文件上传的路径返回
            return json([
               'code'=>200,
               'msg'=>'上传单个',
                'data'=>'uploads/'.$savename,
            ]);
 
        } catch (\think\exception\ValidateException $e) {
            //错误返回提示信息
            return json([
                'code'=>200,
                'msg'=>$e->getMessage(),
                'data'=>[],
            ]);
        }
 
    }

 

商品相册上传接口(多图上传)

参照接口文档

请求地址

POST /images

需进行token认证

示例: http://adminapi.tbyue.com/images

请求参数

名称 类型 必填 备注
type string 图片类型。默认为商品:goods
images string 图片文件

返回数据

名称 备注
success 上传成功的图片地址集合
error 上传成功的图片名称和错误信息集合

返回示例

{
    “success”:[
        "/uploads/goods/20190530/dsgdsafdsfds.png",
        "/uploads/goods/20190530/dsfdsdgfdasd.png",
    ],
    "error":[
        {
            "name":"1.png",
            "msg":"图片尺寸错误"
        },
        {
            "name":"2.png",
            "msg":"图片类型错误"
        }
    ]
}

postman测试

ThinkPHP6 logo上传接口(异步请求)以及商品相册上传接口(多图上传)_第2张图片

书写上传逻辑

 public function save(Request $request)
    {
 
        // 接收上传的类型
        $type = $request->post("type", "goods");
        // 接收文件上传
        $file = $request->file("images");
        // 设定文件上传的大小
        $fileSize = 1024*1024*2;
        // 存储上传失败的信息
        $error = [];
        // 存储上传成功的信息
        $success = [];
        // 循环批量验证
        foreach ($file as $val) {
            // 捕获异常
            try {
                // 验证文件大小、后缀
                validate(['images' => 'fileSize:' . $fileSize . '|fileExt:jpg'])
                    ->check(['images' => $val]);
                // 上传文件
                $saveName = Filesystem::putFile($type, $val);
 
                // 将成功后的路径保存到数组中
                $success[] = 'uploads/' . $saveName;
            } catch (ValidateException $e) {
                // 记录验证错误的失败信息
                $error[]= [
                    'name' => $val->getOriginalName(),
                    'msg' => $e->getMessage()
                ];
            }
        }
        // 组装返回数据的结果集
        $data = [
            'success' => $success,
            'error' => $error
        ];
        // 返回数据
        return json($data);
    }

 

总结

1.文件上传时大小的限制不是KB是B,引号内不允许写计算

2.文件验证check方法必须要求是数组

3.文件上传的putfile方法必须是一个uploadsFile对象

4.要使用try catch合理捕获异常,但不是越多越好,要清楚知道什么叫不可预知的错误

你可能感兴趣的:(php,postman,测试工具,前端,thinkphp,php)