如何在SpringMVC中通过Ajax使用PUT方法上传文件?

如何在SpringMVC中通过Ajax使用PUT方法上传文件?,ajax,spring,file-upload,put,apache-commons-fileupload,Ajax,Spring,File Upload,Put,Apache Commons Fileupload,我有以下js代码将Ajax请求发送到映射SpringMVC中方法的URL function update(id) { $.ajax({ datatype:"json", type: "put", url: "/wagafashion/ajax/TempAjax.htm", data: "id=" + id+"&t="+new Date().getTime(), success: function(re

我有以下js代码将Ajax请求发送到映射SpringMVC中方法的URL

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>
方法调用
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代码中的错误部分总是提醒
错误:[object]
。在这种情况下,即使使用
POST
方法,也会发生同样的情况


如何通过Ajax传递多部分内容(精确地使用
PUT
方法)?

我真的看不出这意味着如何将多部分文件发布到服务器?数据只包含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);
        }
    });
}

错误部分中的警告框仅显示“error:[对象]”,即使使用
数据:$(“#mainForm”).serialize(),
,也没有运气。您是否在spring上下文中定义了多部分解析器?正如这里所描述的,是的,我在我的
applicationContext.xml
文件中定义了
MultipartResolver
,它工作正常(没有Ajax),但是JavaScript总是说,“Error:[object object]”,在Ajax的情况下。在jQuery文档中:typeString Default:“GET”请求的类型(“POST”或“GET”),默认值是“GET”。注意:这里也可以使用其他HTTP请求方法,如PUT和DELETE,但并非所有浏览器都支持它们。我还尝试将请求方法更改为POST,但如果不使用隐藏的iframe等技术,它似乎无法使用AJAX上传文件。有些人用不同的方式解决这个问题。
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);
        }
    });
}