最近、たまたま vue+springboot のフロントエンドとバックエンドの分離プロジェクトに触れ、画像アップロード機能を使って記録しました。 フロントエンドで送信されるフォームコードの一部<el-form-item label="カバー画像"> <el-upload v-model="dataForm.title" クラス="アバターアップローダー" :limit="1" リストタイプ="絵カード" :on-preview="ハンドルPictureCardPreview" 複数 :http-request="アップロードファイル" :on-remove="ハンドル削除" :on-change='changeUpload' :file-list="画像"> <i class="el-icon-plus"></i> </el-アップロード> </el-form-item> el-upload の要素の説明:
再実行とデータ戻る { 画像: [{name: 'food.jpg', url: 'upload/2022/web/20210329194832973.png'}], 画像URL: ''、 fileList: [], // ファイルアップロードデータ(複数のファイルを1つにまとめたもの) ダイアログイメージURL: ''、 ダイアログ表示: false、 オプション: [], コンテンツ: ''、 エディターオプション: {}, 表示: 偽、 データフォーム: { id: 0, タイトル: ''、 コンテンツ: ''、 bz: '' }, tempKey: -666666 // 一時キー。ツリー項目の半選択状態をバックエンド インターフェイスに渡すことができない問題を解決するために使用されます。# 最適化対象} 画像のプレビュー、アップロード、削除changeUpload: function(file, fileList){//プレビュー画像 this.fileList = fileList; }, アップロードファイル(ファイル){ }, handleRemove(ファイル、ファイルリスト) { }, handlePictureCardPreview(ファイル) { this.dialogImageUrl = file.url; this.dialogVisible = true; }, ここでは、カバー画像を 1 つアップロードし、その他のフォーム コンテンツを追加するだけなので、fomrData オブジェクトを使用して送信します。 // フォーム送信 dataFormSubmit() { const form = new FormData() // FormData オブジェクト form.append('file', this.fileList); フォームにタイトルを追加します。 form.append('content', this.$refs.text.value); this.$refs['dataForm'].validate((valid) => { (有効)の場合{ this.$http({ url: this.$http.adornUrl(`/sys/inform/${!this.dataForm.id ? 'save' : 'update'}`), メソッド: 'post'、 データ:フォーム }).then(({データ}) => { if (データ && データコード === 0) { this.$メッセージ({ メッセージ: 「操作は成功しました」 タイプ: '成功'、 期間: 1500、 閉じる時: () => { this.visible = false this.$emit('refreshDataList') } }) } それ以外 { this.$message.error(データ.msg) } }) } }) } バックグラウンドでは、HttpServletRequestリクエストを通じて - WebUtils .getNativeRequest(request, MultipartHttpServletRequest.class) はファイルリクエストを取得し、サーバーまたはローカルにファイルを解析します。 /** * @著者 lyy * PCバックグラウンドアップロードファイルを保存する*/ @RequestMapping(値 = "sys/file/save", メソッド = {RequestMethod.POST, RequestMethod.GET}) @トランザクション パブリック R 保存(HttpServletRequest リクエスト) { 文字列分類 = request.getParameter("分類"); マルチパートHttpServletRequest マルチパートリクエスト = WebUtils .getNativeRequest(リクエスト、MultipartHttpServletRequest.class); 文字列ファイル名 = ""; マルチパートリクエストが null の場合 イテレータ<String> names = multipartRequest.getFileNames(); (names.hasNext()) の間 { リスト<MultipartFile> files = multipartRequest.getFiles(names.next()); if (files != null && files.size() > 0) { for (MultipartFile ファイル: ファイル) { ファイル名 = file.getOriginalFilename(); 文字列 SUFFIX = FileUtil.getFileExt(fileName); ファイル uFile = new File(); uFile.setFileName(ファイル名); uFile.setClassify(分類する); uFile.setCreateTime(新しい日付()); uFile.setFileType(SUFFIX); 文字列 uuid = FileUtil.uuid(); 試す { uFile.setPath(uploadFile(uuid,file) +uuid+"."+SUFFIX); } キャッチ (IOException e) { e.printStackTrace(); } fileService.save(uFile); } } } } R.ok() を返します。 } ローカルにファイルをアップロードするための静的メソッド /** * ファイルをアップロード *@author lyy * @param ファイル * @戻る * @throwsIOException 例外をスローします * @throwsIllegalStateException 例外をスローします */ パブリック静的文字列 uploadFile(文字列 uuid、MultipartFile ファイル) は IllegalStateException、IOException をスローします { 文字列 defaultUrl = MyFileConfig.getFilePath(); 文字列ディレクトリ = java.io.File.separator; 文字列 realUrl = defaultUrl + ディレクトリ; java.io.File 実ファイル = 新しい java.io.File(実 URL); 実際のファイルが存在する場合 (!realFile.exists() && !realFile.isDirectory()) { 実際のファイル。 } 文字列 fullFile = realUrl + uuid + "." + FileUtil.getFileExt(file.getOriginalFilename()); file.transferTo(新しい java.io.File(fullFile)); 文字列 relativePlanUrl = ディレクトリ; relativePlanUrl.replaceAll("\\", "/") を返します。 } Vue+Element+Springboot イメージアップロードの実装例についてはこれで終了です。Vue+Element+Springboot イメージアップロードの関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS 背景画像を設定するための 6 つの興味深いヒント
>>: html の img src="" で js 関数または js 変数を呼び出して、画像パスを動的に指定します。
目次MySQL ログファイルバイナリログBinlogログがオンになっていますログ記録を有効にする方法...
序文クエリ情報が複数のテーブルから取得される場合、クエリのためにこれらのテーブルを結合する必要があり...
1. いつsetUpを実行するかvue3 ではメソッドを正常に使用できるようになったことは誰もが知っ...
序文MySQL マスター スレーブ レプリケーションの遅延は、業界では長年の問題となっています。遅延...
1つ。 wget https://dev.mysql.com/get/mysql57-communi...
以下に、トレーニング機関からのヒントと私自身の要約をいくつか示します。以下のインデックスの内容を説明...
目次序文1. まず、既存のバージョンの MySQL を完全にアンインストールします。 2. deb ...
最近、新しいプロジェクトでは springcloud と docker が使用されています。この 2...
序文: vue3.0の要素フレームワークを使用します。要素はvue2.0をサポートしており、vue3...
COALESCE は、各パラメータ式 (expression_1、expression_2、...、...
この記事では、MySQL 5.6.23のインストールと設定のチュートリアルを参考までに紹介します。具...
シナリオ最大 10000 要素のリストを正しくレンダリングする方法。無限ドロップダウン読み込みテクノ...
目次行と列の変換トランスクリプトの構成を分析するvue3 + el-table で作成されたトランス...
開発中にサーバーを起動する必要がある場合、ローカルテストではポートを直接書き込み、実際の環境ではバイ...
設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...