Skip to content
关注公众号,获取新课通知
【重要通知】uniapp实战社区交友交流群更换为:602180461,靓仔/靓女可以重新申请加入哦~

上传多图api


创建相关文件

php
// 创建图片控制器
php think make:controller api/v1/Image
// 创建图片模型
php think make:model Image
// 创建公共文件上传类
php think make:controller FileController

controller层:application\api\controller\v1\Image.php

php
//  上传多图
public function uploadMore(){
    $list = (new ImageModel())->uploadMore();
    return self::showResCode('上传成功',['list'=>$list]);
}

route层:route\route.php

php
// 用户操作(绑定手机)
Route::group('api/:v1/',function(){
    ...
    // 上传多图
    Route::post('image/uploadmore','api/:v1.Image/uploadMore');
    ...
})->middleware(['ApiUserAuth','ApiUserBindPhone','ApiUserStatus']);

model层:application\common\model\Image.php

php
// 上传多图
public function uploadMore(){
    $image = $this->upload(request()->userId,'imglist');
    $imageCount = count($image);
    for ($i=0; $i < $imageCount; $i++) { 
        $image[$i]['url'] = getFileUrl($image[$i]['url']);
    }
    return $image;
}

// 上传图片
public function upload($userid = '',$field = ''){
    // 获取图片
    $files = request()->file($field);
    if (is_array($files)) {
        // 多图上传
        $arr = [];
        foreach($files as $file){
            $res = \app\common\controller\FileController::UploadEvent($file);
            if ($res['status']) {
                $arr[] = [
                    'url'=>$res['data'],
                    'user_id'=>$userid
                ];
            }
        }
        return $this->saveAll($arr);
    }
    // 单图上传
    if(!$files) TApiException('请选择要上传的图片',10000,200);
    // 单文件上传
    $file = \app\common\controller\FileController::UploadEvent($files);
    // 上传失败
    if(!$file['status']) TApiException($file['data'],10000,200);
    // 上传成功,写入数据库
    return self::create([
        'url'=>$file['data'],
        'user_id'=>$userid
    ]);
}

文件上传类封装:

\application\common\controller\FileController.php

php
<?php

namespace app\common\controller;
use think\Request;

class FileController
{
    // 上传单文件
    static public function UploadEvent($files,$size = '2067800',$ext = 'jpg,png,gif',$path = 'uploads')
    {
        $info = $files->validate(['size'=>$size,'ext'=>$ext])->move($path);
        return [
            'data'=> $info ? $info->getPathname() : $files->getError(),
            'status'=> $info ? true :false
        ];
    }

}

封装获取图片完整路径的助手函数

application\common.php

php
// 获取文件完整url
function getFileUrl($url='')
{
    if (!$url) return;
    return url($url,'',false,true);
}