この記事では、参考までに、ビデオアップロード機能を実現するためのVueの具体的なコードを紹介します。具体的な内容は次のとおりです。 環境: vue + TS動画アップロード + Alibaba Cloudへのアップロード 主にvue下のフロントエンド動画アップロードを扱います Alibaba Cloudのビデオオンデマンドサービスを使用する 1. バックグラウンドで開発APIを申請し、Alibaba Cloudのインターフェースアクセス制御を要求する必要があります。 ビデオ.vue <テンプレート> <div class="コンテナ"> <el-card> <div スロット="ヘッダー"> <div>コース:</div> <div>ステージ:</div> <div>授業時間:</div> </div> <el-form ラベル幅="40px"> <el-form-item label="ビデオ"> <入力 ref="ビデオファイル" タイプ="ファイル" > </el-form-item> <el-form-item label="カバー"> <入力 ref="画像ファイル" タイプ="ファイル" /> </el-form-item> <el-form-item> <el-ボタン タイプ="プライマリ" @click="認証アップロード" >アップロードを開始</el-button> <el-button>戻る</el-button> </el-form-item> </el-form> </el-card> </div> </テンプレート> <スクリプト> /* eslint を無効にする */ 'axios' から axios をインポートします 輸入 { aliyunImagUploadAddressAdnAuth、 aliyunビデオアップロードアドレスAdnAuth、 トランスコードビデオ、 AliyunTransCodeパーセントを取得する } '@/services/aliyun-oss' から エクスポートデフォルト{ データ () { 戻る { アップローダー: null、 ビデオID: null、 画像URL: ''、 ファイル名: '' } }, 作成された(){ この.initUploader() }, メソッド: { authUpload() { const videoFile = this.$refs['ビデオファイル'].files[0] this.uploader.addFile(ビデオファイル、null、null、null、'{"Vod":{}}') this.uploader.addFile(this.$refs['画像ファイル'].files[0], null, null, null, '{"Vod":{}}') this.fileName = ビデオファイル名 this.uploader.startUpload() }, アップローダーの初期化(){ this.uploader = 新しいウィンドウ.AliyunUpload.Vod({ // Ali アカウント ID には値が必要です。値は https://help.aliyun.com/knowledge_detail/37196.html から取得されます。 ユーザーID: 1618139964448548、 // VOD にアップロードするリージョン。デフォルト値は 'cn-shanghai'、//eu-central-1、ap-southeast-1 地域: 'cn-shanghai'、 // デフォルトのフラグメントサイズは 1M で、100K 未満にはできません パーツサイズ: 1048576, // 並行してアップロードするシャードの数。デフォルトは 5 です 並列: 5, // ネットワーク障害が発生した場合の再アップロード回数、デフォルトは 3 回 再試行回数: 3, // ネットワーク障害が発生した場合、再アップロード間隔はデフォルトで 2 秒です。retryDuration: 2、 // アップロードを開始 onUploadstarted: async uploadInfo => { console.log('onUploadstarted', アップロード情報) uploadAuthInfo を null にします アップロード情報に画像が含まれている場合 const {データ} = aliyunImagUploadAddressAdnAuth() を待機します this.imageUrl = data.data.imageURL アップロード認証情報 = data.data } それ以外 { const {データ} = aliyunVideoUploadAddressAdnAuth({ ファイル名: uploadInfo.file.name }) this.videoId = データ.data.videoId アップロード認証情報 = data.data } // コンソールログ('uploadAuthInfo', uploadAuthInfo) this.uploader.setUploadAuthAndAddress( アップロード情報、 アップロードAuthInfo.アップロードAuth、 アップロードAuthInfo.アップロードアドレス、 アップロード認証情報.ビデオID || アップロード認証情報.画像ID ) }, // ファイルのアップロードが成功しました onUploadSucceed: function (uploadInfo) { console.log('onUploadSucceed', アップロード情報) }, // ファイルのアップロードに失敗しました onUploadFailed: function (uploadInfo, code, message) { コンソールログ('onUploadFailed') }, // ファイルアップロードの進行状況、単位: バイト onUploadProgress: function (uploadInfo, totalSize, loadedPercent) { }, // アップロード認証情報のタイムアウト onUploadTokenExpired: function (uploadInfo) { コンソールログ('onUploadTokenExpired') }, // アップロードされたすべてのファイルが完了した onUploadEnd: async uploadInfo => { コンソール.log(アップロード情報) コンソール.log({ レッスンID: this.$route.query.lessonId、 ファイルID: this.videoId、 カバー画像URL: this.imageUrl、 ファイル名: this.fileName }) const {データ} = transCodeVideoを待機します({ レッスンID: this.$route.query.lessonId、 ファイルID: this.videoId、 カバー画像URL: this.imageUrl、 ファイル名: this.fileName }) コンソール.log(データ) setInterval(非同期() => { const {データ} = getAliyunTransCodePercent(this.$route.query.lessonId) を待機します console.log('トランスコーディングの進行状況', データ) }, 3000) } }) } } } </スクリプト> aliyun-oss.ts、ストレージインターフェース /** * Alibaba Cloudにアップロード*/ '@/utils/request' からリクエストをインポートします エクスポートconst aliyunImagUploadAddressAdnAuth = () => { リクエストを返す({ メソッド: 'GET'、 url: '/boss/course/upload/aliyunImagUploadAddressAdnAuth.json' }) } エクスポートconst aliyunVideoUploadAddressAdnAuth = (params: any) => { リクエストを返す({ メソッド: 'GET'、 url: '/boss/course/upload/aliyunVideoUploadAddressAdnAuth.json', パラメータ }) } エクスポート const transCodeVideo = (データ: 任意) => { リクエストを返す({ メソッド: 'POST'、 url: '/boss/course/upload/aliyunTransCode.json', データ }) } エクスポートconst getAliyunTransCodePercent = (lessonId: 文字列 | 数値) => { リクエストを返す({ メソッド: 'GET'、 url: '/boss/course/upload/aliyunTransCodePercent.json', パラメータ: { レッスンID } }) } 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL データベースのホットスタンバイにおける問題点の分析
>>: Linux でユーザーをグループに追加する 4 つの方法の概要
データベース SQL の最適化はよくある問題です。何百万ものデータ ボリュームに対してページング ク...
目次1. はじめに2. 実際の事例1. App.vueを変更する2. レイアウトを調整する3. ジャ...
1. CSSは左の固定幅と右の適応幅を実現します1. ポジショニング <!DOCTYPE ht...
目次予備的注釈問題の再現データ削除の原則データの再利用どの操作がデータホールの原因になりますか?表領...
目次序文基本的な使い方文法エラー処理プロミスチェーン呼び出し非同期と待機よく使われる方法1. Pro...
任意のテキスト エディターを開き、次のコードをコピーして、たとえば SomeFilename.htm...
HTML 仕様書では、画像の crossorigin 属性が導入されています。適切なヘッダー情報 ...
フロントエンドとバックエンドがやり取りする場合、get または delete を介してバックエンドに...
1. CSS の概念: (カスケーディング スタイル シート)利点: 1. コンテンツとプレゼンテ...
目次NIS の紹介ネットワーク環境: 1. 環境の準備(両方のノードが必要) 2.nisマスターサー...
Dockerで作成したコンテナを削除する方法1. まず、docker -s -aコマンドを使用してす...
コードをコピーコードは次のとおりです。 <span style="font-fami...
mysql 8.0.22 winx64のインストールと設定のグラフィックチュートリアルは参考までに、...
目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...
<br />かつて、仏印と東坡氏が仏教について雑談していたとき、東坡氏が突然こう言った。...