2015-11-30 2 views
1

Я использую Spring версии 4.2.3, Spring boot version 1.3.0.405 Метод не допускается весной MVC

Когда я использую Advanced rest client, чтобы загрузить файл к моей службе, я получаю ошибку 405 Method Not Allowed.

Мой контроллер:

@RequestMapping(value = "/uploadDocXFileMul", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 
public 
@ResponseBody 
HttpEntity<String> upload(@RequestParam("fileUpload") MultipartFile file, @RequestBody FileDTO fileDTO){ 
    /** 
    work with file 

    **/ 
} 

Мои FileDTO является

public class FileDTO implements Serializable { 

private static final long serialVersionUID = -211383758881523704L; 

@NotEmpty 
private String type; 
@NotNull 
private Date createdDate; 
@NotEmpty 
private String clientId; 

public String getType() { 
    return type; 
} 

public void setType(String type) { 
    this.type = type; 
} 

public Date getCreatedDate() { 
    return createdDate; 
} 

public void setCreatedDate(Date createdDate) { 
    this.createdDate = createdDate; 
} 

public String getClientId() { 
    return clientId; 
} 

public void setClientId(String clientId) { 
    this.clientId = clientId; 
} 

клиентские изображения Мои остальные enter image description here

enter image description here

Мое сообщение об ошибке:

Status 
405 Method Not Allowed Show explanation Loading time: 792 
Request headers 
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36 
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo 
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryFGAn4APIXqrAvDlW 
Accept: */* 
Accept-Encoding: gzip, deflate 
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6 
Response headers 
Server: Apache-Coyote/1.1 
Allow: HEAD, GET 
Content-Type: text/html;charset=utf-8 
Content-Language: en 
Content-Length: 1090 
Date: Mon, 30 Nov 2015 16:00:06 GMT 

Примечание: Я очень новые пружины, Пожалуйста, помогите мне в этом

+0

установить заголовок типа контента для multipart/form-data, он установлен по умолчанию для приложения/json в вашем клиенте для отдыха –

+0

, который я использовал, изменив это на multipart/form-data, но не повезло –

+0

Если вы отправляете файл он автоматически переопределяет заголовок типа контента для multipart/form-data - даже если вы устанавливаете другой заголовок. В противном случае транспорт не будет работать. –

ответ

0

Я думаю, ваша проблема обусловленно

@RequestBody FileDTO fileDTO 

Это отображает тело вашего запроса на объект. Но вы также говорить строку, вы только cosume

consumes = MediaType.MULTIPART_FORM_DATA_VALUE 

И вы посылаете ваш запрос как данные формы и не имеет отображения формы в контроллере.

Я рекомендую вам разделить его двумя способами: 1 с файловой загрузкой, а другой с вами RequestBody, и вы можете отправить его json-данные вместо данных формы.

Смежные вопросы