0
var urlUpload = "${root}manager/uploadFile.html";
var params = $('#topicForm').serialize();

    $.ajax({
        type: 'POST',
        url: urlUpload,
        data: params,
        contentType: 'multipart/form-data',
                processData: false,
        success: function(data) {
            alert("success");
        }
    });

@RequestMapping(value="/manager/uploadFile.html", method = RequestMethod.POST)
public String uploadFile(@ModelAttribute("topicForm") TopicForm topicForm,        
@RequestParam("topicDoc") MultipartFile multipartFile ModelMap model) { ... }

以下の例外が発生します

org.springframework.web.multipart.MultipartException:マルチパートサーブレットリクエストを解析できませんでした。ネストされた例外はorg.apache.commons.fileupload.FileUploadExceptionです:マルチパート境界が見つからなかったため、リクエストは拒否されました。

プラグインは正常に動作していますありがとうございます。

var urlUpload = "${root}manager/uploadFile.html?categoryId="+$("#category").val()+"&topicName="+$("#topicName").val();
 $.ajaxFileUpload({
 url:urlUpload, 
 secureuri:false,
 fileElementId:'fileupload',
 dataType: 'html',
 success: function (data, status) {
   alert("success");
 }
});

プラグインは正常に機能しているので、入力ファイルと一緒にいくつかのフォームフィールドをコントローラーに送信する必要があります。上記のajax呼び出しで、値をurlに追加しました。これに対する他の解決策はありますか?

4

1 に答える 1

0

問題は、フォームがマルチパートであると主張しながら、フォームのURLエンコードされたシリアル化をアップロードしようとしていることです(JQueryの関数のドキュメントserialize()を参照してください)。

適切なリクエストを作成するプラグインを使用する必要があります。これが私が使ったものです。

または、HTML5を使用してファイルをアップロードすることもできます。私はこれをしていません。

于 2013-03-26T14:36:57.227 に答える