2016-04-20 5 views
0

Ich benutze Spring4 MVC und versuche, eine Datei zusammen mit einigen anderen Eingabefeldern hochzuladen.Spring4 MVC multiparts

I mehrt Resolver im Frühjahr xml und jackson Konverter

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <beans:property name="maxUploadSize" value="250000"/> 
    <beans:property name="defaultEncoding" value="utf8" /> 
</beans:bean> 

<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
    <beans:property name="messageConverters" > 
    <beans:list> 
     <beans:ref bean="jacksonMessageConverter" /> 
    </beans:list> 
    </beans:property> 
</beans:bean> 

In meiner Form habe ich es als enctype="multipart/form-data" und unten erklärt haben, ist mein Ajax-Aufruf

var oemManuals = new FormData(); 
oemManuals.append("name",$("#name").val()); 
oemManuals.append("description",$("#description").val()); 

if($('#url').val()){ 
    oemManuals.append('url', $('#url')[0].files[0]); 
} 

$.ajax({ 
    type: "POST", 
    url: "${pageContext.request.contextPath }/uploadManuals", 
    data: oemManuals, 
    processData: false, 
    contentType: false, 
    cache: false, 
    dataType: "json", 

    success: function(data){ 

In meinem Controller ich durch @RequestParam versucht und fordern Sie aber eine required paramerter name is null bekommen. Obwohl ich sehe, sind die Parameter vorhanden.

@RequestMapping(value="/uploadManuals", method = RequestMethod.POST) 
public @ResponseBody List<OEMManuals> uploadManuals(HttpServletRequest request, 
                @RequestParam MultipartFile url, 
                HttpSession session) throws IOException{ 

Alle Werte sind null.

Kann jemand bitte vorschlagen, wenn ich etwas vermisse.

Dank

Antwort

0

Sie haben einen Parameter 'url' in der Steuerung festgelegt.

@RequestParam MultipartFile url 

So muss es unter

url: "${pageContext.request.contextPath }/uploadManuals?url=value", 
+0

wie ein Parameter mit dem Namen URL in Ihren Ajax-Aufruf sein ich die URL anhängen zu Formdata, if ($ ('# url'). Val()) { oemManuals.append ('url', $ ('#url') [0] .files [0]); } – user1762730

+0

nur um hinzuzufügen, ich bin in der Lage, die Daten in Content Disposition zu sehen. – user1762730

+0

nicht in den Inhalt nach Ihrer Controller-Signatur erwartet es den Parameter "URL" zusammen mit der tatsächlichen URL. –