更改DcatAdmin上传组件, 直传七牛云

PHP技术
523
0
0
2022-09-16
标签   Dcat Admin
Dcat 文件上传文档

由于dcat文件上传是先传到服务器再转发到七牛云的, 所以会在进度条走完之后还要等待一段时间, 使用体验不好, 且容易超时

琢磨了好久, 贴出来分享一下

// 随机文件名
$filename = md5(uniqid()) . '.mp4';
$disk     = Storage::disk('qiniu');
// 回调信息, Dcat 上传文件需要的报文格式
$callBack = [
    'status' => true,
    'data'   => [
        'id'   => $filename,
        'name' => $filename,
        'path' => $filename,
        'url'  => 'http://' . env('QINIU_DOMAINS') . '/' . $filename,
    ],
];
$policy   = [
    'returnBody' => json_encode($callBack),
];
// 七牛云上传 token
$token    = $disk->uploadToken($filename, 3600, $policy);

$form->file('video1', '上传视频')
    // 更改储存驱动
    ->disk('qiniu')
    // 自动上传
    ->autoUpload()
    // 限制文件上传格式
    ->accept('mp4')
    // 提示文字
    ->help('仅支持MP4格式')
    // 更改文件最大限制
    ->maxSize(512000)
    // 关闭页面删除
    ->removable(false)
    // 设置上传地址
    ->url('http://upload-z2.qiniup.com')
    // 自定义 webuploader 配置  
    // Dcat 默认 name 为 _file_
    ->options(['fileVal' => 'file'])
    // 上传事件
    ->on('startUpload', <<<JS
        function () {
            console.log('文件开始上传...', this);
            // 上传文件前附加自定义参数到文件上传接口  
            this.uploader.options.formData['token'] = "$token";
            this.uploader.options.formData['fileName'] = "$filename";
            this.uploader.options.formData['key'] = "$filename";
        }
    );