フロントエンドを使用してファイルをアップロードし、コントローラからアクセスし、javaでファイルをチェックしたいとします。アップロードしたいファイルはXMLファイルです。私はXMLスキームでそれをチェックし、それは完全に動作します。Java Spring - ファイルをアップロードしてから、HTMLフロントエンドでレスポンスを返す方法は?
HTML:私のコントローラで
<form method="POST" enctype="multipart/form-data" action="/uploadXML">
<input name="file" type="file" id="importFile" /> <br>
<button name="button" type="submit" class="buttonUpload">Upload</button>
</form>
:
ここ@RequestMapping(value="/uploadXML", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload(
@RequestParam("file") MultipartFile file){
String name = "test11";
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(new File(name + "-uploaded")));
stream.write(bytes);
stream.close();
File convertedFile = convert(file);
//Response response = new Response("Done", name);
//return response;
return validateAgainstSchema(convertedFile);
} catch (Exception e) {
//Response response = new Response("fail", name);
//return response;
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
//Response response = new Response("fail", name);
//return response;
return "You failed to upload " + name + " because the file was empty.";
}
}
私は "通常の" ファイルにMultiparFileを変換*convert(file)*
で、アップロードされたファイルを取得します。 validateAgainstSchema
() XMLファイルが適切な形式であるかどうかを確認します。 私は理解できません。 * validateAgainstSchema
()*文字列「ファイルが正しい形式である」を取得するか、「ファイルが正しい形式ではありません」というメッセージが表示されます。コントローラでこの文字列を返すと、ブラウザはこの文字列だけを含む新しいページにリダイレクトされます。
しかし、私はその結果をシングルページアプリケーションで、たとえば私のフロントエンドで。私は、この問題を解決する方法としてAjaxが役立つかもしれないと考えました。
私のAJAXコード:
$(document).ready(function() {
var url = window.location;
// SUBMIT FORM
$("#customerForm").submit(function(event) {//hier die 1 entfernen!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Prevent the form from submitting via the browser.
event.preventDefault();
ajaxPost();
});
function ajaxPost(){
// PREPARE FORM DATA
/* var formData = {
firstname : $("#firstname").val(), //nachher um Textfelder und so auszulesen
lastname : $("#lastname").val()
}*/
var text = "..........,";
// DO POST
$.ajax({
//type : "POST",
contentType : "application/json; charset=utf-8",
url : url,
//url : url + "/uploadXml",
//url: "/uploadXML",
data : text,
//data : JSON.stringify(formData),
//dataType : 'json',
success : function(result) {
//result ist hier mein html document
if(result.status == "Done"){
/* $("#postResultDiv").html("<strong>" + "Post Successfully! Customer's Info: FirstName = "
+ result.data.firstname + " ,LastName = " + result.data.lastname + "</strong>"); */
$("#postResultDiv").html("<strong>" + "success" + "</strong>");
}else{
$("#postResultDiv").html("<strong>" + "error" + "</strong>");
}
console.log(result);
console.log("test.............");
},
error : function(e) {
alert("Error!")
console.log("ERROR: ", e);
}
});
}
})
この部分、私は全く理解していません。私はウェブ上で見つけたバージョンを使用し、少し調整しました。 (私はid = "customerForm"を私のinput type="file" btw.
に追加しました)。今私は送信ボタンを押して私のdivはテキスト "エラー"を取得し、私のhtmlがコンソールに印刷され、私のajax-requestがコンソールに "成功"を表示する以外は何も起こりません。 私のajaxコードの "result"は自分のhtmlコードのようです。私のdivでXML検査プロシージャの結果を返す方法を教えてください。
誰かが私にこのことを説明できるケースでは、どうすればXMLファイルを保存できますか?私は後で私のプロジェクトでそれが必要です。
ありがとうございました!