Как я могу принять несколько составных файлов в моем REST-контроллере Spring MVC - PullRequest
0 голосов
/ 28 мая 2018

У меня есть REST-контроллер Spring MVC, который принимает составной файл, следующим образом:

@Consumes(MediaType.MULTIPART_FORM_DATA)
@RequestMapping(value = "/save-comment", method = RequestMethod.POST)
public String addComment(@FormDataParam("jsonData") String jsonData, @FormDataParam("file") MultipartFile file, ModelMap model)
{
    //My Logic to save file and data
}

В моем приложении используется клиент REST Jersey.Приведенный выше код отлично работает для меня.Теперь я пытаюсь отправить несколько файлов на мой контроллер REST.

Я пытался изменить @FormDataParam("file") MultipartFile file на @FormDataParam("file") MultipartFile[] file, но у меня это не работает.Как я могу передать несколько файлов одновременно REST-контроллеру?

Исключение, которое я получаю: вложенное исключение

org.springframework.beans.BeanInstantiationException: Failed to instantiate [[Lorg.springframework.web.multipart.MultipartFile;]: No default constructor found; nested exception is java.lang.NoSuchMethodException: [Lorg.springframework.web.multipart.MultipartFile;.<init>()] with root cause
java.lang.NoSuchMethodException: [Lorg.springframework.web.multipart.MultipartFile;.<init>()

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Концепция множественной загрузки файлов, которую мы можем обработать с помощью интерфейса MultipartFile.

Пакет: org.springframework.web.mutipart public interface MutipartFile

MutipartFile - это интерфейс, обычно клиент отправляет илизагрузить файл, он будет отправлен на сервер как в форме запроса mutipart.

Мы получим этот запрос mutipart с помощью концепции MutipartFile.Этот интерфейс MutipartFile имеет номер метода, эти методы используются для получения информации об этом файле, и если вы хотите сделать какую-либо копию или перемещение файла, мы также можем выполнить один из методов с именем TransferTo («destinationPath»);

для лучшего понимания цели просто посетите https://walkintoknow.blogspot.com/2018/05/multiple-files-upload-concept-handling.html

 @RequestMapping(value="/multipleFilesUpload" , method=RequestMethod.POST, 
consumes="multipart/form-data", produces="application/json")  
public ResponseEntity<?> mutipleFileUpload(HttpServletRequest req, 

@RequestParam(value="file" , required = false) MultipartFile[] files) throws IOException{

for (MultipartFile file : files) {
 File f= new File(getPath()+createFolderInDesc("/appFiles /GSTC/mutipleUpload/"),file.getOriginalFilename());
   try {
        file.transferTo(f); //Transfer or Saving in local memory 
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
                e.printStackTrace();
            }
        }


    return null;
} 

, если это поможет, пожалуйста, продвигайте.

0 голосов
/ 28 мая 2018

Просто введите обычный HTTP-запрос к многочастному запросу, как показано ниже:

try {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) httpServletRequest;
            List<MultipartFile> multipartFileList = multipartRequest
                    .getFiles("images");

            if (null != multipartFileList && !multipartFileList.isEmpty()) {

                for (MultipartFile file : multipartFileList) {
                    String fileName = file.getOriginalFilename().trim();
                    if (file.getBytes().length > 0) {
                        // logic goes gere
                    }

                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...