13

Как я пытаюсь это сделать с весенним ботинком и веб-сервисами с дополнениями хром-почтмана.Запрос был отклонен, потому что в springboot не было обнаружено многострочной границы

В почтальоне content-type="multipart/form-data" и я получаю исключение.

HTTP Status 500 - Request processing failed; 
nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; 
nested exception is java.io.IOException: 
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found 

В контроллере я указал ниже код

@ResponseBody 
@RequestMapping(value = "/file", headers = "Content-Type= multipart/form-data", method = RequestMethod.POST) 

public String upload(@RequestParam("name") String name, 
     @RequestParam(value = "file", required = true) MultipartFile file) 
//@RequestParam()CommonsMultipartFile[] fileUpload 
{ 
    // @RequestMapping(value="/newDocument", , method = RequestMethod.POST) 
    if (!file.isEmpty()) { 
     try { 
      byte[] fileContent = file.getBytes(); 
      fileSystemHandler.create(123, fileContent, name); 
      return "You successfully uploaded " + name + "!"; 
     } catch (Exception e) { 
      return "You failed to upload " + name + " => " + e.getMessage(); 
     } 
    } else { 
     return "You failed to upload " + name + " because the file was empty."; 
    } 
} 

Здесь я указать код обработчика файла

public String create(int jonId, byte[] fileContent, String name) { 
    String status = "Created file..."; 
    try { 
     String path = env.getProperty("file.uploadPath") + name; 
     File newFile = new File(path); 
     newFile.createNewFile(); 
     BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(newFile)); 
     stream.write(fileContent); 
     stream.close(); 
    } catch (IOException ex) { 
     status = "Failed to create file..."; 
     Logger.getLogger(FileSystemHandler.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return status; 
} 
+0

Я также столкнувшись с одной и той же проблемой, и его единственная работа в почтальоне не работает с другими инструментами, такими как «Клиент предварительного отдыха». могу я узнать почему?? – Narendhran

ответ

0

проблема не в программном коде .problem с в запросе. вы не получаете какой-либо границы в многочастном запросе.

+1

Как это получить? –

+0

его ошибка сервера 500 для сервера нет границ границы, когда сервер получает изображение –

41

Проблема заключается в том, что вы сами настраиваете Content-Type, пусть он будет пустым. Google Chrome сделает это за вас. Многостраничный Content-Type должен знать границу файла, и когда вы удаляете Content-Type, Postman будет делать это автоматически для вас.

+2

Спасибо. Это работало для меня в Postman. Кроме того, ответ от tomeokin помогает в том, что Postman не подходит для всех тестовых сценариев. –

+0

Спасибо, что решила моя проблема слишком – erhun

+0

Спасибо, решена моя проблема тоже ... –

1

«Postman - REST Client» не подходит для выполнения почтовых действий с настройкой content.type. Вы можете попробовать использовать «Advanced REST client» или другие.

Кроме того, заголовки заменялись потреблением и производили с весны 3.1 M2, см. https://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements. И вы можете напрямую использовать produces = MediaType.MULTIPART_FORM_DATA_VALUE.

0

У меня была такая же проблема, когда я отправлял запрос POST от Postman, и позже я смог решить проблему, установив собственный тип контента с установленным рядом с ним граничным значением.

Я думал, что люди могут столкнуться с подобной проблемой и, следовательно, я делюсь своим решением.

postman

5

Переполнение типа контента в Почтальон и почтальона автоматически определяет тип содержимого, основываясь на вашем входе в время выполнения.

Sample

+0

работал для меня, спасибо! – mangotang

1

Это работает для меня: Загрузка файла через Почтальон, к SpringMVC бэкэнда веб-приложение:

Backend: Endpoint controller definition

Почтальон: Headers setup POST Body setup