この記事では、参考までに、ビデオアップロード機能を実現するための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 つの方法の概要
現在、プロジェクトの要件により、フォームの送信を制御し、送信前にデータを検証および処理するために j...
Docker入門Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテ...
ターミナルやコンソールで作業しているときは、メールを読むなど、もっと重要な作業があるかもしれないので...
序文:金額の保存など、小数点数を保存し、精度要件がある場合、通常は DECIMAL フィールド タイ...
序文データベースの応用において、プログラマーは継続的な実践を通じて多くの経験を積んできました。これら...
Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbi...
MySQL のデータ型は datetime です。データベースに保存されているデータは 2015-0...
1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...
ナビゲーションなどは日々の開発でよく使うので、記録として記事を書きます。ナビゲーションは終了/開始位...
目次スロークエリログとは何ですか?スロークエリを有効にする方法ログ分析ツール mysqldumpsh...
目次連合テーブルの初期化ステートメントの実行連合の結果ユニオンオールグループ化十分なメモリステートメ...
この記事の例では、vue検証コードコンポーネントで使用される具体的な実装コードを参考までに共有してい...
1. システムの Python バージョンに応じて、pip インストール パッケージをダウンロードし...
CSS における位置指定の概要position属性は英語で位置を意味し、 CSSでの主な機能は要素...
2級コンピュータ試験のMySQL知識ポイントの基礎、一般的なMYSQLコマンドは次のとおりです。よく...