私はデスクトップから画像をアップロードし、この画像をJavaScriptのベースコードに変換しています。その後、この画像ベースコードをマルチパートリクエストでスプリングコントローラに送信したいと思います。しかし、私はフォームを使用していません。ajaxからのマルチパートリクエストをフォームのないスプリングコントローラに送信しますか?
HTML
<input id="inputFileToLoad" type="file" onchange="encodeImageFileAsURL()">
JAVA SCRIPT
window.photoCakeUrl = '<c:url value="/media/image/upload"/>';
function encodeImageFileAsURL() {
var filesSelected = document.getElementById("inputFileToLoad").files;
if (filesSelected.length > 0) {
var fileToLoad = filesSelected[0];
var fileReader = new FileReader();
fileReader.onload = function (fileLoadedEvent) {
var srcData = fileLoadedEvent.target.result; // <--- data: base64
var newImage = document.createElement('img');
var photoCake = srcData;
newImage.src = srcData;
document.getElementById("imgTest").innerHTML = newImage.outerHTML;
var ajax1 = $.ajax({
type: 'POST',
url: photoCakeUrl,
processData: false, // important
contentType: false, // important
dataType: 'json',
data: {photoCak: photoCake}
});
});
},
fileReader.readAsDataURL(fileToLoad);
}
}
SPRINGのCONTROLLER:
@RequestMapping(value = "/media/image/upload", method = RequestMethod.POST)
@ResponseBody
public Map<String, String> productPictureUploadnew(MultipartHttpServletRequest request, HttpServletResponse response) {
Map<String, String> resp = new HashMap<>();
String photoCake = request.getParameter("photoCak");
System.out.println("photoCake " + photoCake);
return resp;
}
しかし、ときに私が属していますAJAXコールを呼び出すと500エラーが発生します。私は単純に使用している場合
public Map<String, String> productPictureUploadnew(HttpServletRequest
request, HttpServletResponse response)
それが動作します。私が使用しているときに意味するMultipartHttpServletRequest場所HttpServletRequest 要求それは動作しません。
を画像をフィルタリングするためのファイル入力に
accept="images/*"
属性を追加しますはい、私はこのデータを複数のリクエストで送信したいと思います。 –
そして、あなたの 'inputFileToLoad'を含むフォームを送信してください。もちろん、 'enctype =" multipart/form-data "'をフォームに設定します。 – Quagaar