更改DcatAdmin上傳元件, 直傳七牛雲

Slowlyo發表於2022-03-20
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";
        }
JS
    );
本作品採用《CC 協議》,轉載必須註明作者和本文連結
海到無涯天作案,山登絕頂我為峰

相關文章