jquery+springbootでファイルアップロード機能を実現

jquery+springbootでファイルアップロード機能を実現

この記事の例では、ファイルアップロード機能を実現するためのjquery+springbootの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

フロントエンド

<!DOCTYPE html>
<html lang="ja">
 
<ヘッド>
    <タイトル></タイトル>
    <メタ文字セット="utf-8">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <meta name="レンダラー" content="webkit">
    <meta http-equiv="キャッシュコントロール" content="max-age=21600" />
    <meta http-equiv="Expires" content="2014 年 8 月 18 日月曜日 23:00:00 GMT" />
    <meta name="キーワード" content="">
    <meta name="説明" content="テーブル/更新.html">
</head>
 
<本文>
    <span>------------フォーム送信--------------</span>
    <br>
    <span>------------単一ファイル--------------</span>
    <form action="/metadata/metaTables/single-file" method="post" enctype="multipart/form-data">
        <input type="file" name="meFile" />
        <p>
            <input type="submit" value="送信" />
            <input type="reset" value="clear" />
        <p>
    </フォーム>
    <span>-----------単一ファイル + パラメータ->RequestParam 受信パラメータ</span>--------------</span>
    <form action="/metadata/metaTables/single-file-param" method="post" enctype="multipart/form-data">
        <input type="file" name="meFile" />
        名前:<input name="名前"></input>
        <p>
            <input type="submit" value="送信" />
            <input type="reset" value="clear" />
        <p>
    </フォーム>
    <span>------------単一ファイル + パラメータ->パラメータを受け取るオブジェクト</span>--------------</span>
    <form action="/metadata/metaTables/single-file-object" method="post" enctype="multipart/form-data">
        <input type="file" name="meFile" />
        aaa:<入力名="aaa"></入力>
        bbb:<入力名="bbb"></入力>
        ccc:<入力名="ccc"></入力>
        <p>
            <input type="submit" value="送信" />
            <input type="reset" value="clear" />
        <p>
    </フォーム>
 
    <span>------------複数のファイル(パラメータの受け渡しは単一ファイルの場合と同じです)--------------</span>
    <form action="/metadata/metaTables/many-file" method="post" enctype="multipart/form-data">
        <input type="file" name="meFile" multiple="複数" />
        <p>
            <input type="submit" value="送信" />
            <input type="reset" value="clear" />
        <p>
    </フォーム>
    <span>------------フォルダー (フォルダー下のすべてのファイル)-------------</span>
    <form action="/metadata/metaTables/dir" method="post" enctype="multipart/form-data">
        <input type="file" name="meFile" webkitdirectory ディレクトリ />
        <p>
            <input type="submit" value="送信" />
            <input type="reset" value="clear" />
        <p>
    </フォーム>
    <span>-------------Ajax は FormData 経由でファイルをアップロードします-------------</span>
    <br>
    <span>------------1. フォームフォームを使用して FormData オブジェクトを初期化し、ファイルをアップロードします-------------</span>
    <br>        
    <フォームid="ajax_formdata">
        aaa:<入力名="aaa" 値="1"></入力>
        bbb:<入力名="bbb" 値="2"></入力>
        ccc:<入力名="ccc" 値="3"></入力>
        入力<input id="ajax_formdata_file" type="file" name="meFile"/>
        <p>
            <button onclick="save()">単一入力の送信</button>
            <button onclick="remove1()">1 をクリア</button>
            <button onclick="remove2()">2 をクリア</button>
        <p>
    </フォーム>
    <span>------------2. FormData オブジェクトを使用してファイルをアップロードするためのフィールドを追加する-------------</span>
    <フォームid="ajax_formdata1">
        aaa:<入力名="aaa" 値="4"></入力>
        bbb:<入力名="bbb" 値="5"></input>
        ccc:<入力名="ccc" 値="6"></入力>
        入力<input id="ajax_formdata_file1" type="file" name="meFile"/>
        複数ファイルの送信 <input id="ajax_formdata_file2" type="file" name="meFile" multiple="multiple"/>
        入力<input id="ajax_formdata_file3" type="file" name="meFile"/>
        <p>
            <button onclick="save1()">単一入力送信</button>
            <button onclick="save2()">複数ファイルの送信</button>
            <button onclick="save3()">複数入力の送信</button>
            <button onclick="remove1()">1 をクリア</button>
            <button onclick="remove2()">2 をクリア</button>
        </p>
    </フォーム>
    <strong>バックエンドで MultipartFile を受け入れる方法は、フロントエンドで formData.append を構築する方法によって異なります</strong>
    <br>
    <strong>formData.append("meFile", ファイル オブジェクト)-->MultipartFile</strong>
    <br>
    <strong>formData.append("meFile", 複数のファイルオブジェクト)-->MultipartFile[]</strong>
 
    <script src="../../assets/hplus/js/jquery.min.js?v=2.1.4"></script>
    <script src="../../assets/jquery.form.js"></script>
    <スクリプト>
        関数保存(){
            var formData = 新しい FormData($('#ajax_formdata')[0]);
            $.ajax({
                url: '/metadata/metaTables/ajax-formdata',
                タイプ: "投稿",
                データ: フォームデータ、
                コンテンツタイプ: false、
                プロセスデータ: false、
                成功: 関数 (データ) {
                    アラート("成功")
                }
            });
        }
        関数 save1(){
            var フォームデータ = 新しいフォームデータ();
            var formJson = $('#ajax_formdata1').serializeJson();
            フォームデータ.append("num", 110)
            formData.append("テスト", JSON.stringify(formJson))
            formData.append("meFile", $('#ajax_formdata_file1')[0].files[0]);
            $.ajax({
                url: '/metadata/metaTables/ajax-formdata1',
                タイプ: "投稿",
                データ: フォームデータ、
                コンテンツタイプ: false、
                プロセスデータ: false、
                成功: 関数 (データ) {
                    アラート("成功")
                }
            });
        }
        関数 save2(){
            var フォームデータ = 新しいフォームデータ();
            formData.append("テスト", JSON.stringify({'aaa':111,'bbb':222,'ccc':333}))
            for(var f of $('#ajax_formdata_file2')[0].files)
                formData.append("meFile", f);
            $.ajax({
                url: '/metadata/metaTables/ajax-formdata2',
                タイプ: "投稿",
                データ: フォームデータ、
                コンテンツタイプ: false、
                プロセスデータ: false、
                成功: 関数 (データ) {
                    アラート("成功")
                }
            });
        }
        関数 save3(){
            デバッガ
            var フォームデータ = 新しいフォームデータ();
            フォームデータ.append('num',123456)
            for(let i=0;i<$('#ajax_formdata1 input[type="file"]').length;i++){
                for(let j=0;j<$('#ajax_formdata1 input[type="file"]')[i].files.length;j++){
                    formData.append("meFile", $('#ajax_formdata1 input[type="file"]')[i].files[j]);
                }
 
            }
            $.ajax({
                url: '/metadata/metaTables/ajax-formdata3',
                タイプ: "投稿",
                データ: フォームデータ、
                コンテンツタイプ: false、
                プロセスデータ: false、
                成功: 関数 (データ) {
                    アラート("成功")
                }
            });
        }
        関数remove1(){
            alert("入力を置き換えることで達成されました")
            // 2 番目のタイプ:
            var obj = document.getElementById('ajax_formdata_file');
            obj.outerHTML = obj.outerHTML;
        }
        関数remove2(){
            アラート("クリアメソッド")
            //最初のタイプ:
            var obj = document.getElementById('ajax_formdata_file');
            オブジェクトを選択します。
            ドキュメントの選択をクリアします。
        }
        (関数 ($) {
            $.fn.serializeJson = 関数(){
                var serializeObj = {};
                var 配列 = this.serializeArray();
                var str = this.serialize();
                $(配列).each(関数() {
                    if (serializeObj[this.name]) {
                        $.isArray(serializeObj[this.name]) の場合 {
                            serializeObj[this.name].push(this.value);
                        } それ以外 {
                            serializeObj[this.name] = [serializeObj[this.name], this.value];
                        }
                    } それ以外 {
                        シリアル化Obj[this.name] = this.value;
                    }
                });
                serializeObj を返します。
            };
        })(jQuery);
    </スクリプト>
</本文>
 
</html>

後部

@レストコントローラ
@RequestMapping({ "/metadata/metaTables" })
パブリッククラス MetaTablesController
{
    
 
    @PostMapping("単一ファイル")
    パブリック void シングルファイル(@RequestParam("meFile")マルチパートファイル マルチパートファイル){
        システム出力のprintln();
    }
    @PostMapping("単一ファイルパラメータ")
    パブリック void シングルファイル(@RequestParam("meFile")マルチパートファイル マルチパートファイル、@RequestParam("name")文字列 名前){
        システム出力のprintln();
    }
    @PostMapping("単一ファイルオブジェクト")
    パブリック void singleFile(@RequestParam("meFile") MultipartFile multipartFile、Test test){
        システム出力のprintln();
    }
    @PostMapping("many-file")
    パブリック void manyFile(@RequestParam("meFile")MultipartFile[] multipartFile){
        システム出力のprintln();
    }
    @PostMapping("dir")
    パブリック void dir(@RequestParam("meFile")MultipartFile[] multipartFile){
        システム出力のprintln();
    }
    @PostMapping("ajax-formdata")
    パブリック void ajaxFormData(@RequestParam("meFile")MultipartFile multipartFile、テスト test){
        システム出力のprintln();
    }
    // 受信オブジェクトは @RequestPart を使用して json 文字列を渡し、その他のオブジェクトは @RequestParam を使用します。
    @PostMapping("ajax-formdata1")
    パブリック void ajaxFormData1(@RequestParam("meFile")MultipartFile multipartFile、@RequestPart("test") Test test、@RequestParam("num")int num){
        システム出力のprintln();
    }
    @PostMapping("ajax-formdata2")
    public void ajaxFormData2(@RequestParam("meFile")MultipartFile[] multipartFile,@RequestPart("test") テスト test){
        システム出力のprintln();
    }
    @PostMapping("ajax-formdata3")
    パブリック void ajaxFormData3(@RequestParam("meFile")MultipartFile[] multipartFile、@RequestParam("num")int num){
        システム出力のprintln();
    }
 
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • SpringBootはファイルアップロード機能を実装する
  • SpringBootファイルまたはイメージのアップロードおよびダウンロード機能の実装
  • Springboot+thymeleaf ファイルアップロード機能の実装コード
  • SpringBootは単一ファイルと複数ファイルのアップロード機能を実装します

<<:  HTML+CSSを使用してマウスの動きを追跡する

>>:  MySQLオンラインデータベースのデータをクリーンアップする方法

推薦する

SQLは、隣接する2行のデータに対して加算、減算、乗算、除算の演算を実行します。

SQL は、データを特定の順序で並べ替え、特定のフィールドでグループ化した後、隣接する 2 つのデ...

jQueryはショッピングカート機能を実装します

この記事の例では、ショッピングカート機能を実装するためのjQueryの具体的なコードを参考までに共有...

Windows 10 で MySQL を完全に削除してアンインストールする方法

序文この記事では、Windows 10 システムで MySQL を完全に削除してアンインストールする...

CSS 手法を使用してモジュール性を実現する例

1. CSS 方法論とは何ですか? CSS methodologiesデザイン パターンまたは CS...

MySQL の基本: グループ化関数、集計関数、グループ化クエリの詳細な説明

目次1. 使い方が簡単2. DISTINCTを使用して重複を削除する3. COUNT()の詳細な紹介...

スクロール時に選択領域のフォント色を暗くするために CSS を使用するサンプルコード

日付ピッカーをカプセル化する場合、選択時にフォントの色を暗くする必要があります。実装後の効果を見てみ...

divとtableの選択と組み合わせ方について簡単に説明します

ページレイアウトは、Web ページを扱い始めた頃からずっと気にかけていたことです。初期のテーブル構造...

MySQLの実行原理、論理階層化、データベース処理エンジンの変更について詳しく説明します

長い間 MySQL を使ってきたので、SQL 文はすでに覚えていると思います。そこで、その実行原理を...

バントリストコンポーネントをスクロールしても、スクロールバーの位置は保持されます。

バントリストコンポーネントをスクロールするときに、スクロールバーの位置が保持されます。これは、kee...

psdカット画像をdiv+css形式に変換する

PSD から div css へのウェブページ切り取り例ステップ 1: まず、すべてのタグの内側と外...

Vueでキャッシュされたページを管理する方法

目次問題1: 破壊1. 破壊する方法2. いつ破壊するか2.1 解決策1: route.queryを...

Centos7 DockerでNginxファイルを変更するプロセスの詳細な説明

1. docker に nginx をインストールします。 docker に Nginx をインスト...

CentOS 8.1 で LEMP (Linux+Nginx+MySQL+PHP) 環境を構築する (チュートリアルの詳細)

目次ステップ1: CentOS 8でパッケージを更新するステップ2: CentOS 8にNginx ...

Spring Boot + jar パッケージングのデプロイメント Tomcat 404 エラーの問題を解決する

1. Spring Boot は jsp jar パッケージをサポートしていません。jsp は wa...

IntelliJ IDEA で Java を使用して MySQL データベースに接続する方法の詳細な説明

1. MySQLデータベースをダウンロードし、インストールして設定するダウンロードアドレス: htt...