OSS を使用して Vue プロジェクトに画像や添付ファイルをアップロードするここでは、写真のアップロードと添付ファイルのアップロードに違いはなく、アップロードのプロセスは同じです。 1. 新しい oss.js ファイルを作成し、oss をカプセル化して使用します (ali-oss パッケージをインストールする必要があります)const OSS = require('ali-oss') 定数OSSConfig = { uploadHost: 'http://xxxxx.oss-cn-shenzhen.aliyuncs.com', //OSSアップロードアドレスossParams: { 地域: 'oss-cn-shenzhen', success_action_status: '200', // デフォルトは 200 アクセスキーID: 'LTxxxxxxxxxxxxxxxvnkD', アクセスキーシークレット: 'J6xxxxxxxxxxxxxxxxiuv', バケット: 'xxxxxxxx-czx'、 }, } 関数 random_string(len) { 長さ = 長さ || 32 var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678' var maxPos = 文字数.長さ var pwd = '' (i = 0; i < len; i++) の場合 { pwd += chars.charAt(Math.floor(Math.random() * maxPos)) } パスワードを返す } 関数 uploadOSS(ファイル) { 新しい Promise(async (resolve, reject) => { を返します。 const ファイル名 = `${ランダム文字列(6)}_${ファイル名}` クライアント = 新しいOSS({ リージョン: OSSConfig.ossParams.region、 アクセスキーID: OSSConfig.ossParams.accessKeyId、 アクセスキーシークレット: OSSConfig.ossParams.accessKeySecret、 バケット: OSSConfig.ossParams.bucket、 }) const res = client.multipartUpload(ファイル名、ファイル) を待機します。 // 解決(res) // または次のように返します: 解決する({ ファイル URL: `${OSSConfig.uploadHost}/${fileName}`, ファイル名: ファイル名 }) }) } エクスポート { uploadOSS } 2. ページでoss.jsを使用するこれは、elementUI アップロード コンポーネントの 2 次カプセル化です。コンポーネント アクションは画像や添付ファイルのアップロードには使用されませんが、OSS アップロード メソッドが使用されます。 <テンプレート> <div class="ファイルのアップロード"> <el-アップロード ref="ファイルアップロード" アクション="" :headers="アップロードプロパティのヘッダー" リストタイプ="絵カード" :ファイルリストを表示="false" :http-request="fnアップロードリクエスト" :on-success="ハンドル成功" :on-error="エラー処理" :before-upload="handleUpload" > <スロット></スロット> </el-アップロード> </div> </テンプレート> <スクリプト> "@/utils/auth" から { getAccessToken、getRefreshToken、getAccessTokenTTL } をインポートします。 '@/utils/oss' から { uploadOSS } をインポートします。 エクスポートデフォルト{ 名前: "インデックス", データ() { 戻る {}; }, 計算: { ユーザーアカウントID() { this.$store.state.user.userAccountID を返します。 }, アップロードプロパティ() { 戻る { // アクション: `${process.env.VUE_APP_BASE_API}/api/file/upload`, ヘッダー: { // インターフェースにはトークンが必要な場合があります: "", 認証: getAccessToken(), }, データ: {}、 }; }, }, メソッド: { handleExceed(ファイル、ファイルリスト){ // console.log(ファイル、ファイルリスト); this.$message.error('アップロードに失敗しました。アップロードできるファイルは 10 ファイルまでに制限してください。'); }, handleUpload(ファイル、ファイルリスト){ // console.log(ファイル、ファイルリスト); var testmsg = file.name.substring(file.name.lastIndexOf('.') + 1) const extension = testmsg === 'xlsx' || testmsg === 'xls' || testmsg === 'docx' || testmsg === 'doc' || testmsg === 'pdf' || testmsg === 'zip' || testmsg === 'rar' || testmsg === 'ppt' || testmsg === 'txt' 定数isLimit10M = ファイルサイズ / 1024 / 1024 < 10 var ブール値 = false; if(拡張子 && isLimit10M){ ブール値 = true; } それ以外 { ブール値 = false; } if(!拡張子) { this.$message.error('添付ファイルの種類を選択してください!'); ブール値を返します。 } if(!isLimit10M) { this.$message.error('アップロードに失敗しました。10Mを超えることはできません!'); ブール値を返します。 } ブール値を返します。 }, ハンドル成功(res) { // コンソールログ(res); もし(res){ this.$emit('fileData', res) this.$message.success("添付ファイルが正常にアップロードされました!"); } }, ハンドルエラー(err){ this.$message.error('添付ファイルのアップロードに失敗しました!'); }, // 画像をアップロード async fnUploadRequest(options) { 試す { // console.log(オプション); let file = options.file; // ファイルを取得する res = await uploadOSS(ファイル) とします。 コンソールログ(res); //データを返します this.$emit("fileData", res); this.$message.success("添付ファイルが正常にアップロードされました!"); } キャッチ (e) { this.$message.error('添付ファイルのアップロードに失敗しました!'); } }, }, }; </スクリプト> <style lang="scss" スコープ> ::v-deep .el-アップロード、 .el-upload--画像カード{ // 幅: 50px; 高さ: 0px; 境界線: なし; 行の高さ: 0; 表示: ブロック; 背景: #f5f6fb; } .el-アップロード{ 幅: 50px; } .img-続き{ 幅: 50px; 高さ: 24px; 背景: #f5f6fb; .imgアイコン{ 色: #ccc; } .img-テキスト { フォントサイズ: 12px; 高さ: 24px; 色: #000; } } </スタイル> カプセル化されたアップロードコンポーネントを使用する <div class="タスクの詳細pr"> <el-form-item label="報告理由" prop="taskDesc" 必須> <div class="flex-center アップロード位置"> <ImgUpload @imgData="imgData" /> <FileUpload クラス="ml10" @fileData="fileData" /> </div> <el-入力 タイプ="テキストエリア" v-model="ruleForm.taskDesc" placeholder="報告の理由を入力してください" 最大長 = "200" @input="checkiptTaskDesc()" </el-input> ... <div class="ipt-taskDesc-length">{{checkIptTaskDescLen}}/200</div> <div class="img-list mt10 flex"> <ImgZoomIn :imagesList="画像リスト" @deleteImg="deleteImg"></ImgZoomIn> </div> <div class="dotted-line" v-if="imagesList.length > 0 && filesList.length > 0"></div> <div class="ファイルアイテム"> <HandleFile :filesList="ファイルリスト" @deleteFile="削除ファイル"></HandleFile> </div> </el-form-item> </div> 効果は以下のとおりです これで、vue が OSS を使用して画像や添付ファイルをアップロードする方法についての説明は終わりです。vue が OSS を使用して画像や添付ファイルをアップロードする方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: クラウドサーバーを購入し、Alibaba Cloud に Pagoda Panel をインストールする手順
目次概要1. URL経由でダウンロード2. aタグのダウンロード属性とblobコンストラクタを組み合...
序文最近、古いプロジェクトから残ったいくつかの SQL 最適化の問題に対処するのに忙しくしています。...
勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...
目次Vue3 カプセル化メッセージプロンプトインスタンス関数スタイルレイアウトカプセル化メッセージ....
1. .js ライブラリ ファイルのアドレスを Google CDN アドレスに置き換えます。 (G...
1.コンテナ内の /etc/hosts、/etc/resolv.conf、/etc/hostname...
NetEase Blog でコードを使用する方法: まずブログにログインし、ブログのホームページの左...
目次シナリオコードの実装要約:シナリオ最近、ElementUI をベースにしたバックグラウンド管理シ...
今日は618日、主要なショッピングモールはすべてプロモーション活動を行っています。今日は、次のように...
ご存知のとおり、SSH は現在、リモート ログイン セッションやその他のネットワーク サービスにセキ...
この記事ではMySQL 5.7.16のインストールと設定方法を記録します。具体的な内容は以下のとおり...
1. pipとは何かpip は、Python パッケージの検索、ダウンロード、インストール、アンイ...
序文Docker イメージは Dockerfile といくつかの必要な依存関係で構成され、Docke...
物件の詳細な説明transition 属性の目的は、一部の CSS プロパティ (背景など) をスム...
いわゆる 3 列適応レイアウトとは、両側の幅が固定され、中央のブロックの幅が適応されることを意味しま...