我想通過ajax傳輸圖像文件和相應的信息到groovlet服務器。formdata通過ajax與groovy
問題: 我無法從HTTPServletRequest對象中獲取數據。
這裏是JavaScript的代碼,我用它來傳輸數據:
$("#submitButton").click(function(){
if (submitButtonCondition == true) {
//Gathering Data
var enabledValue = false;
if ($("#activate").val()){
enabledValue = true;
}
var metadata = $("#metaTextarea").val();
var inputFile = $("#fileInput")[0].files[0];
// Creating FormData-Object filled with necessary Data
var formData = new FormData();
formData.append('file', inputFile);
formData.append('enabled', enabledValue);
formData.append('metadata', metadata);
// Sending FormData to Server
$.ajax({
type : 'POST',
url : '/createNewEntry.groovy',
contentType: false,
processData: false,
data: formData,
success: function(resultData){
console.log("Upload successful");
},
failure: function(resultData){
console.log("Upload failed");
}
});
}
});
驗證數據是否已經被髮送的唯一方法已訪問請求對象的附屬讀者:System.out.println(request.reader.text);
輸出看起來像這樣:
------WebKitFormBoundaryzNUfRksUAVW2ioCa
Content-Disposition: form-data; name="file"; filename="blatest.png"
Content-Type: image/png
------WebKitFormBoundaryzNUfRksUAVW2ioCa
Content-Disposition: form-data; name="enabled"
true
------WebKitFormBoundaryzNUfRksUAVW2ioCa
Content-Disposition: form-data; name="metadata"
asdfasdfasdf
------WebKitFormBoundaryzNUfRksUAVW2ioCa--
顯然數據已經被轉移? 儘管如此,我仍在努力從方法getParameter, getParameterMap, getParameterNames, getParameterValues
中獲取信息,這些方法都沒有給出任何結果。
不幸的是,getPart的方法並沒有正常工作。 (request.getPart(「file」));' 'System.out.println(request.getPart(「enabled」));' 'System.out.println(request。 getPart( 「元數據」));'' 的System.out.println(request.getParts()大小());' 輸出: 'null' 'null' 'null' '0' – DreadLockDave
檢入瀏覽器DevTools發送到服務器的內容類型。因爲你提交了幾個輸入類型和其中一個'file' - 你必須有'content-type:multipart/...'。那麼servlet應該將它解析爲多部分。 – daggett
'Request Headers' content-type:multipart/form-data'對應於Chrome Dev-Tools的網絡日誌。 – DreadLockDave