Spring MVC 4 + ajaxの他のフォームフィールドで画像をアップロードすることはできません

ヴィッキージャック

java + spring mvc 4 + hibernate 4 + jquery ajax with tomcat9で記述された画像を含むユーザーをWebアプリケーションに追加するためのフォームを作成したいと思います。

それは私のフォームです:

        <form:form id="id1" name="addUser" class="form-horizontal form-material" data-toggle="validator"
                   method="post"
                   action="javascript:void(0)" enctype="multipart/form-data">
            <div class="form-group">
                <div class="col-md-12 m-b-20">
                    <input name="name" type="text" placeholder="${msg_name}" class="form-control"
                           data-required-error="${msg_requiredInput}"
                           required>
                </div>
                <div class="col-md-12 m-b-20">
                    <input name="mobile" type="text" class="form-control" placeholder="${msg_mobile}">
                </div>
                <div class="col-md-12 m-b-20">
                    <input name="phone" type="text" class="form-control" placeholder="${msg_phone}">
                </div>
                <div class="col-md-12 m-b-20">
                    <input name="email" type="email" class="form-control" placeholder="${msg_email}">
                </div>
                <div class="col-md-12 m-b-20">
                    <div class="fileupload btn btn-danger btn-rounded waves-effect waves-light">
                        <span><i class="ion-upload m-l-5"></i>
                            ${msg_sendPicture}
                        </span>
                        <input name="file" id="file" type="file" class="upload">
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button id="addUerSubmit" type="submit" class="btn btn-info waves-effect">
                        ${msg_save}
                </button>
                <button type="button" class="btn btn-default waves-effect"
                        data-dismiss="modal">
                        ${msg_cancel}
                </button>
            </div>
        </form:form>

そして私のajaxリクエストは:

<script type="text/javascript">
    $(function () {
        $('#addUserSubmit').click(function (e) {
            if ($(this).hasClass('disabled'))
                return;
            $.ajax({
                url: 'addUser',
                method: 'POST',
                dataType: 'json',
                async: false,
                cache: false,
                processData: false,
                data: $('form[name=addUser]').serialize(),
                success: function (res) {
                    showAlert(res.type, res.message);
                }
            })
        });
    });
</script>

次のコードは私のコントローラーです:

@ResponseBody
    @PostMapping("/addUser")
    public void addUser(@RequestParam("name") String name,
                                     @RequestParam("mobile") String mobile,
                                     @RequestParam("phone") String phone,
                                     @RequestParam("email") String email,
                                     @RequestParam("file") MultipartFile file) {
        ServletContext servletContext = request.getServletContext();
        User user = new User(name, mobile, phone, email);
        userService.addUser(user);

        try {
            if (file != null)
                FileCopyUtils.copy(file.getBytes()
                        , new File(servletContext.getRealPath("/files/users/") + user.getId()));
            else
                FileCopyUtils.copy(new File(servletContext.getRealPath("/files/users/user.png"))
                        , new File(servletContext.getRealPath("/files/users/") + user.getId()));
        } catch (IOException e) {
      e.printStack();

        }

    }

しかし、私がこのプログラムを実行すると、サーバーは500でエラーを返し、サーバーは次のエラーを表示します:

22-Jul-2018 18:12:36.506 SEVERE [http-nio-8080-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [spring-mvc] in context with path [/spring] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Current request is not a multipart request] with root cause
 org.springframework.web.multipart.MultipartException: Current request is not a multipart request
    at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:190)
    at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:109)
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:158)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

.........
rieckpil

HTMLのデフォルトの動作ではなくカスタムJavaScript関数を使用する場合は、要素でこれを構成した場合でもAJAX呼び出しがこの構成を使用しないようにform、データを送信するようにAJAX呼び出しを構成する必要があると思います。AJAX呼び出しの場合と同様データをラップする方法については、Stackoverflowで次の回答をご覧ください。jQuery.ajaxを使用してmultipart / formdataを送信するmultipart/form-data<form>FromData

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring MVCでのファイルアップロードとフォームデータを含むRESTful PUT

分類Dev

Spring MVC4とSpringBootを使用したhtml5複数ファイルのアップロード

分類Dev

マルチパート/フォームとチャンクエンコーディングの両方を使用して、Spring MVCでファイルアップロードを受信するにはどうすればよいですか?

分類Dev

Spring MVC 4.3.9では、フォームタグ(メソッドget)のアクション(パラメーター)属性を変更できません

分類Dev

mvc4の部分ビューでドロップダウンコントロールを埋めることができません

分類Dev

Spring MVC、JSPでajaxを使用したファイルとデータのアップロード

分類Dev

ユーザーがjspの1つのフィールドに入力した場合、他のフォームフィールドに自動的に入力するにはどうすればよいですか(spring mvcとhibernateを使用している間)

分類Dev

MVC4でのファイルのアップロード

分類Dev

Spring4Dのcomparerでデフォルトのパラメーター値を使用することはできません

分類Dev

Spring MVC4への移行

分類Dev

spring mvc 4 + thymeleaf

分類Dev

Spring4 MVCフォーム検証result.hasErrors()は常にfalseです

分類Dev

Spring MVCでファイルをダウンロードするときに「名前を付けて保存」ウィンドウをポップアップさせるにはどうすればよいですか?

分類Dev

Spring MVCでファイルをダウンロードするときに「名前を付けて保存」ウィンドウをポップアップさせるにはどうすればよいですか?

分類Dev

フィールドを自動配線できませんでした(Spring mvc-アノテーション)

分類Dev

さまざまなモデルの非表示フォームフィールドを動的に作成する(MVC 4)

分類Dev

Spring 4MVCでのプロパティファイルの使用

分類Dev

Spring MVCでJSPからコントローラーにAjaxを使用してマルチパートファイルを渡すことができません

分類Dev

MVC4での画像のアップロード/表示

分類Dev

Angular4でファイルをアップロードすることはできません。結果不明

分類Dev

カスタムモデルバインディングは、すべてのフィールドにアクセスできるわけではありませんMVC4

分類Dev

MVC4プロジェクトのデプロイ中にエラーが発生しました:ファイルまたはアセンブリを見つけることができません

分類Dev

Spring 4MVC-RESTサービス-Beanでデフォルト値を使用

分類Dev

Spring 4MVC-RESTサービス-Beanでデフォルト値を使用

分類Dev

エンティティフレームワークmvc4を使用して、サーバーフォルダーに画像をアップロードし、パスをSqlserverに保存します。

分類Dev

Spring MVC:フォームデータをJSON形式で送信できません

分類Dev

Rails4で複数のペーパークリップ画像を1つのフォームで編集することはできません

分類Dev

MVC4のアップロードファイルは常にnull例外を取得します

分類Dev

サーバーでファイルアップロードチャンクを処理する方法(Plupload / Spring MVC)?

Related 関連記事

  1. 1

    Spring MVCでのファイルアップロードとフォームデータを含むRESTful PUT

  2. 2

    Spring MVC4とSpringBootを使用したhtml5複数ファイルのアップロード

  3. 3

    マルチパート/フォームとチャンクエンコーディングの両方を使用して、Spring MVCでファイルアップロードを受信するにはどうすればよいですか?

  4. 4

    Spring MVC 4.3.9では、フォームタグ(メソッドget)のアクション(パラメーター)属性を変更できません

  5. 5

    mvc4の部分ビューでドロップダウンコントロールを埋めることができません

  6. 6

    Spring MVC、JSPでajaxを使用したファイルとデータのアップロード

  7. 7

    ユーザーがjspの1つのフィールドに入力した場合、他のフォームフィールドに自動的に入力するにはどうすればよいですか(spring mvcとhibernateを使用している間)

  8. 8

    MVC4でのファイルのアップロード

  9. 9

    Spring4Dのcomparerでデフォルトのパラメーター値を使用することはできません

  10. 10

    Spring MVC4への移行

  11. 11

    spring mvc 4 + thymeleaf

  12. 12

    Spring4 MVCフォーム検証result.hasErrors()は常にfalseです

  13. 13

    Spring MVCでファイルをダウンロードするときに「名前を付けて保存」ウィンドウをポップアップさせるにはどうすればよいですか?

  14. 14

    Spring MVCでファイルをダウンロードするときに「名前を付けて保存」ウィンドウをポップアップさせるにはどうすればよいですか?

  15. 15

    フィールドを自動配線できませんでした(Spring mvc-アノテーション)

  16. 16

    さまざまなモデルの非表示フォームフィールドを動的に作成する(MVC 4)

  17. 17

    Spring 4MVCでのプロパティファイルの使用

  18. 18

    Spring MVCでJSPからコントローラーにAjaxを使用してマルチパートファイルを渡すことができません

  19. 19

    MVC4での画像のアップロード/表示

  20. 20

    Angular4でファイルをアップロードすることはできません。結果不明

  21. 21

    カスタムモデルバインディングは、すべてのフィールドにアクセスできるわけではありませんMVC4

  22. 22

    MVC4プロジェクトのデプロイ中にエラーが発生しました:ファイルまたはアセンブリを見つけることができません

  23. 23

    Spring 4MVC-RESTサービス-Beanでデフォルト値を使用

  24. 24

    Spring 4MVC-RESTサービス-Beanでデフォルト値を使用

  25. 25

    エンティティフレームワークmvc4を使用して、サーバーフォルダーに画像をアップロードし、パスをSqlserverに保存します。

  26. 26

    Spring MVC:フォームデータをJSON形式で送信できません

  27. 27

    Rails4で複数のペーパークリップ画像を1つのフォームで編集することはできません

  28. 28

    MVC4のアップロードファイルは常にnull例外を取得します

  29. 29

    サーバーでファイルアップロードチャンクを処理する方法(Plupload / Spring MVC)?

ホットタグ

アーカイブ