2012-11-30 52 views
0

我有以下js代碼發送一個Ajax請求到一個映射在Spring MVC中的方法的URL。如何在Spring MVC中通過Ajax使用PUT方法上傳文件?

function update(id) 
{ 
    $.ajax({ 
     datatype:"json", 
     type: "put", 
     url: "/wagafashion/ajax/TempAjax.htm", 
     data: "id=" + id+"&t="+new Date().getTime(), 
     success: function(response) 
     { 
      alert(response);       
     }, 
     error: function(e) 
     { 
      alert('Error: ' + e); 
     } 
    }); 
} 

以下是隻有文件瀏覽器和按鈕的簡單的Spring窗體。

<form:form id="mainForm" name="mainForm" method="post" action="Temp.htm" enctype="multipart/form-data" commandName="tempBean"> 
    <input type="file" id="myFile" name="myFile"/> 
    <input type="button" id="btnSubmit" name="btnSubmit" onclick="update(1);" value="Submit"/> 
    <!--The js function is called when this button is clicked supplying 1 as id.--> 
</form:form> 

當按下按鈕時,會調用Spring控制器中的以下方法。

@RequestMapping(method={RequestMethod.PUT}, value={"ajax/TempAjax"}) 
public @ResponseBody String update(HttpServletRequest request, HttpServletResponse response) 
{ 
    System.out.println(ServletFileUpload.isMultipartContent(request)); 
    return "Message"; 
} 

方法調用但是ServletFileUpload.isMultipartContent(request)返回false


當我修改方法如下,

@RequestMapping(method={RequestMethod.PUT}, value={"ajax/TempAjax"}, headers={"content-type=multipart/form-data"}) 
public @ResponseBody String update(@RequestParam MultipartFile file, HttpServletRequest request, HttpServletResponse response) 
{ 
    System.out.println(ServletFileUpload.isMultipartContent(request)); 
    return "Message"; 
} 

在JS代碼中的錯誤部分總是警報Error: [object Object]。在這種情況下,即使使用POST方法也會發生同樣的情況。

如何通過Ajax傳遞多部分內容(正確使用PUT方法)?

回答

0

我真的不明白這是如何將多部分文件發佈到服務器?數據只包含id和時間。

試着這麼做:

function update(id) 
{ 
    $.ajax({ 
     datatype:"json", 
     type: "put", 
     url: "/wagafashion/ajax/TempAjax.htm", 
     data: $('#mainForm').serialize(), 
     success: function(response) 
     { 
      alert(response);       
     }, 
     error: function(e) 
     { 
      alert('Error: ' + e); 
     } 
    }); 
} 
+0

錯誤節只說警告框, 「*錯誤:[對象的對象] *」 即使有'數據:$( '#的MainForm')序列化() ,',沒有運氣。 – Tiny

+0

您是否在春季環境中定義了多重解析器?如此處所述http://stackoverflow.com/a/13405415/302387 –

+0

是的,我已經在我的'applicationContext.xml'文件中定義了'MultipartResolver',它工作正常(沒有Ajax),但JavaScript總是說「*錯誤: [對象對象] *「,以防Ajax。 – Tiny