序文ヒント:以下はこの記事の主な内容です。以下のケースを参考にしてください。 1. オブジェクトストレージCloud Object Storage (COS) は、Tencent Cloud が提供する、大量のファイルを保存するための分散ストレージ サービスです。高いスケーラビリティ、低コスト、信頼性、セキュリティなどの利点があります。ユーザーは、コンソール、API、SDK、ツールなどのさまざまな方法を通じて、COS に簡単かつ迅速にアクセスし、複数の形式のファイルをアップロード、ダウンロード、管理し、大量のデータの保存と管理を実現できます。 2. Tencent Cloud Cosを構成する1. ライブラリをインポートする コードは次のとおりです(例): 最初のステップは、Tencent Cloud開発者アカウントを取得することです 実名認証 次にQRコードをスキャンして認証します 無料製品を入手するにはここをクリックしてください オブジェクトストレージCOSを選択 この時点でアカウント部分は完了です。次に、写真を保存するためのバケットを作成する必要があります。オブジェクトストレージコンソールにログインし、バケットを作成します。バケットの権限をパブリック読み取りとプライベート書き込みに設定する バケットを作成する CORSルールの設定 AllowHeader を * に設定する必要があります。 3. 新しいファイルアップロードコンポーネントを作成するJavaScript SDKのインストール npm i cos-js-sdk-v5 --save 新しいアップロード画像コンポーネント src/components/ImageUpload/index.vue を作成します。 アップロードコンポーネントには、要素のel-uploadコンポーネントを使用し、フォトウォールモードlisttype="picture-card"を採用することができます。 <テンプレート> <div> <el-アップロード リストタイプ="絵カード" :limit="4" アクション="#" :file-list="ファイルリスト" :on-preview="プレビュー" :http-request="アップロード" :on-change="変更" :before-upload="アップロード前" :accept="typeList" :on-remove="ハンドル削除" > <i class="el-icon-plus" /> </el-アップロード> <el-進捗状況 v-if="表示パーセント" スタイル="幅: 180px" :percentage="パーセント" /> <el-dialog title="画像" :visible.sync="showDialog"> <img :src="imgUrl" style="width: 100%" alt="" /> </el-ダイアログ> </div> </テンプレート> <スクリプト> 'cos-js-sdk-v5' から COS をインポートします。 定数cos = 新しいCOS({ SecretId: 'xxx', // シークレット ID SecretKey: 'xxx' // 秘密鍵 }) // インスタンス化されたパッケージはアップロード機能があり、アカウントのストレージバケットにアップロードできます export default { データ() { 戻る { fileList: [], // 画像アドレスを配列に設定する showDialog: false, // ポップアップレイヤーの表示を制御する imgUrl: '', 現在のイメージUid: null、 タイプリスト: 'image/*', showPercent: false, // 進行状況バーを表示するかどうか percent: 0 // アップロードの進行状況} }, メソッド: { プレビュー(ファイル) { this.imgUrl = ファイル.url this.showDialog = true }, beforeUpload(ファイル) { // アップロードできるファイルの種類 const types = ['image/jpeg', 'image/gif', 'image/bmp', 'image/png'] if (!types.includes(file.type)) { this.$message.error('アップロードできる画像は JPG、GIF、BMP、または PNG 形式のみです!') false を返す // false を返すと、画像はアップロードされません} 定数maxSize = 1024 * 1024 ファイルサイズが最大サイズより大きい場合 this.$message.error('画像の最大サイズは 1M を超えることはできません') 偽を返す } this.currentImageUid = ファイル.uid this.showPercent = true 真を返す }, アップロード(パラメータ) { // console.log(パラメータ.ファイル) if (params.file) { // アップロード操作を実行する cos.putObject({ Bucket: 'xxx', // ストレージバケット Region: 'ap-nanjing', // リージョンキー: params.file.name, // ファイル名 Body: params.file, // アップロードするファイルオブジェクト StorageClass: 'STANDARD', // アップロードモードタイプはデフォルトで標準モードに直接設定できます onProgress: (progressData) => { this.percent = 進捗データ.percent * 100 } }, (エラー、データ) => { // データが返された後の処理方法 if (err) return this.fileList = this.fileList.map(item => { if (item.uid === this.currentImageUid) { 戻り値: { url: 'http://' + data.Location, name: item.name } } 返品商品 }) // コンソール.log(this.fileList) }) } }, handleRemove(ファイル、ファイルリスト) { this.fileList = this.fileList.filter(item => item.uid !== file.uid) // console.log(ファイル) cos.deleteObject({ バケット: 'xxx'、/* 必須*/ 地域: 'ap-nanjing'、/* バケットが配置されている地域、必須フィールド*/ キー: file.name /* 必須*/ }, (エラー、データ) => { // console.log(エラー || データ) }) }, 変更(ファイル、ファイルリスト) { this.fileList = ファイルリスト } } } </スクリプト> 詳細ページではコンポーネントを紹介します <テンプレート> <div class="アプリコンテナ"> <el-card> <el-タブ> <el-tab-pane label="個人情報"> <ユーザー情報 /> </el-tab-pane> <el-tab-pane label="パスワードのリセット"> <!-- フォームを配置します --> <el-フォーム ラベル幅="120px" スタイル="margin-left: 120px; margin-top: 30px" > <el-form-item label="パスワード:"> <el-input style="width: 300px" type="password" /> </el-form-item> <el-form-item label="パスワードの確認:"> <el-input style="width: 300px" type="password" /> </el-form-item> <el-form-item> <el-button type="primary">リセット</el-button> </el-form-item> </el-form> </el-tab-pane> <el-tab-pane label="部門情報"> <部門 /> </el-tab-pane> <el-tab-pane label="アバターを選択"> <画像アップロード /> </el-tab-pane> </el-tabs> </el-card> </div> </テンプレート> <スクリプト> './component/Userinfo' から userInfo をインポートします。 './component/Department' から部門をインポートします。 '@/components/ImagUpload' から imageUpload をインポートします。 エクスポートデフォルト({ コンポーネント: 'ユーザー情報': ユーザー情報、 '部門': 部門、 '画像アップロード': 画像のアップロード }, // メソッド: { アップロード(e) { 定数ファイル = e.target.files[0] const リーダー = 新しい FileReader() reader.readAsDataURL(ファイル) reader.onload = 非同期関数 (e) { アップロードを待つ({ ファイル: { 元の名前: '11.jpg', ファイル: e.target.result } }) } } } }) </スクリプト> 詳細ページのルートを作成します。現在の「ビュー」はセカンダリナビゲーションジャンプなので、ルートは次のように記述する必要があります。 '@/layout' からレイアウトをインポートします エクスポートデフォルト{ パス: '/user', コンポーネント: レイアウト、 子供たち: [{ パス: 'インデックス', コンポーネント: () => import('@/views/user/index'), 名前: 'ユーザー', メタ: { タイトル:「ユーザー管理」 アイコン: 'アカウント' } }, { パス: '詳細', コンポーネント: () => import('@/views/user/detail'), 名前: '詳細', 非表示: true、 メタ: { タイトル: 「ユーザーの詳細」 アイコン: 'アカウント' } }] } レンダリング クリックして表示: アバターを選択してください: クラウド ストレージにアップロードされているかどうかを確認します。 これで、vue.js クラウド ストレージを使用して画像アップロード機能を実装する方法についての説明は終わりです。vue.js 画像アップロードに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Ubuntu環境でxdebugをコンパイルしてインストールする方法
>>: MySQL 8.0.12 のインストールと使用方法のチュートリアル
皆さんもJDを使ったことがあると思います。ホームページには非常によく見られる機能があります。階段の特...
目次序文必要成し遂げる最初のレンダリングメニュー項目をクリックしますスタイルの区別デフォルトのハイラ...
私は最近新しい会社に入社したのですが、データベース設計にいくつか小さな問題があることに気付きました。...
目次1. 4つのコンセプト1. JavaScriptはシングルスレッドです2. タスクキュー3. 同...
序文Linux には Windows のような目立つごみ箱がないため、簡単に復元することはできません...
この記事の例では、ドロップダウンリストを実装するためのJavaScriptの具体的なコードを参考まで...
Linux は、システム内のデバイス、インターフェース、ファイル、スタートアップ、アプリケーション ...
背景tomcat によって生成された catalina.out ログ ファイルが分割されていない場合...
Dockerfile の設定に問題はありませんが、ENTRYPOINT コマンドを実行するとエラー...
目次QRコードログインの真髄QRコードを理解するシステム認証メカニズムQRコードをスキャンしてログイ...
目次解決: 1. 無視する2. 交換する3. 重複キーの更新についてデータを挿入するときに、重複した...
最近、goaccess を使って nginx ログを分析したいのですが、nginx ログの設定形式が...
MySQL マスター/スレーブ レプリケーションを使用すると、1 つのデータベース (マスター デー...
良いアイデアを見つけたので記録しました。私は以前、スクロール効果を実現するためにjQueryを使用し...
シェルスクリプトはアクセス制御を設定し、複数回のログイン失敗後にIPをブロックしてSSHのブルートフ...