Spring Boot Обязательная часть запроса 'file' отсутствует - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать утилиту загрузки файлов и получаю следующую ошибку, когда нажимаю кнопку submit.Он начинает загрузку, а затем неожиданно появляется эта ошибка:

There was an unexpected error (type=Bad Request, status=400).
Required request part 'file' is not present

У меня нет трассировки стека, это все, что отображается в моем окне или консоли.Я искал другие решения, и все они оказались кем-то забытым включить name="file" в свой HTML-файл.Я удостоверился, что это включено, и все еще получаю ошибку.

Ниже моя форма загрузки:

<div id="custom-search-input">
<label>Select a file to upload</label>
    <form action="/upload" enctype="multipart/form-data" method = "post"> 
        <div class="input-group col-md-12">
            <input type="file" name="file" class="search-query form-control"/>
            <span class="input-group-btn">
                <button type="submit" class="btn btn-success">Upload </button>
            </span>
        </div>
    </form>
</div>

Это мой метод загрузки контроллера:

@Value("${upload.path}")
    private String path;

    @RequestMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file, Model model, HttpSession session) throws IOException {
            if(!file.isEmpty()) {
                //Get the user
                User user = (User) session.getAttribute("user");
                //Get the file name
                String fileName = file.getOriginalFilename();
                InputStream is = file.getInputStream();
                //Store the uploaded file into the users directory in the system path
                Files.copy(is, Paths.get(path + user.getNetworkId() + "\\"  + fileName),StandardCopyOption.REPLACE_EXISTING);

            return "redirect:/success.html";

        } else {

            return "redirect:/index.html";
        }   
    }

Также хотел бы отметить, что я пробовал это для моего метода загрузки:

public String upload(@RequestParam(name="file",required=true) MultipartFile file, Model model, HttpSession session) 

Для справки, этот - это то, на что я ссылался.

Согласно некоторым ответам ниже, я попытался создать автономный метод PostMapping, а также @RequestMapping(value="/upload", method = RequestMethod.POST) Я все еще получаю ошибку.

Ответы [ 3 ]

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

Ваш <form> в вашем представлении код с методом как POST

<form action="/upload" enctype="multipart/form-data" method = "post"> 

При изменении контроллера @RequestMapping("/upload") ниже

@RequestMapping(value = "/upload", method = RequestMethod.POST)
0 голосов
/ 29 ноября 2018

Через некоторое время я смог решить эту проблему: В своем файле application.properties я добавил следующее:

spring.servlet.multipart.max-file-size=128MB
spring.servlet.multipart.max-request-size=128MB
spring.http.multipart.enabled=true
upload.path=/export/home/
0 голосов
/ 24 мая 2018

вам нужно что-то, чтобы справиться с загрузкой формы @GetMapping.
@RequestMapping Я думаю, что по умолчанию получить.Поэтому, когда вы «получаете» страницу, она пытается попасть в ваш метод, который ожидает файл. взгляните на мой пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...