Spring Boot MultiPart файл загрузки пустой экран - PullRequest
0 голосов
/ 09 октября 2018

Я использую пружинную загрузку (1.5), пружину (4.3), FreeMarker, встроенный Tomcat.Я хочу загрузить файл.Это работает.Я хочу, чтобы максимальный размер файла был 10 МБ, и когда пользователь пытается загрузить файл большего размера, чтобы показать сообщение.

в приложении. Свойства у меня:

spring.http.multipart.max-file-size=10Mb
spring.http.multipart.max-request-size=10Mb

Контроллер выглядиткак:

 @RequestMapping(value = "/upload", method = RequestMethod.POST)
public String uploadFiles(@RequestParam("uploadedFile") MultipartFile uploadedFile,
                          @RequestParam("overwrite") Optional<Boolean> overwrite,
                          RedirectAttributes redirectAttributes, ModelMap map) throws IOException {
    String referer = map.get(BaseController.REFERER).toString();
    if (uploadedFile.isEmpty()) {
        redirectAttributes.addFlashAttribute("error", "message.file.upload.missing.file");
        return "redirect:" + referer;
    }
    if (uploadedFile.getOriginalFilename().length() > 75) {
        redirectAttributes.addFlashAttribute("warning", "message.file.upload.big.title");
        return "redirect:" + referer;
    }
    try {
        fileService.write(referer, uploadedFile, overwrite.isPresent() ? overwrite.get() : Boolean.FALSE);
        redirectAttributes.addFlashAttribute("success", "message.file.upload.successful");
    } catch (CustomFileException e) {
        if(e.getMessage().contains("message."))
        redirectAttributes.addFlashAttribute("error", e.getMessage());
        else
            redirectAttributes.addFlashAttribute("error", "message.file.upload.unsuccessful");
    }
    return "redirect:" + referer;
}

Я создал controllerAdvices (потому что я ожидал, что по крайней мере вызывается MultipartException. Но он не вызывается. enter image description here

Шаблон выглядиткак это:

  <form name="uploadingForm" enctype="multipart/form-data" action="${base}/upload" method="POST">
    <p>
    <div><input id="fileInput" type="file" name="uploadedFile"></div>
    <div style="padding-top:20px" id="selectedFiles"></div>
    <input type="checkbox" name="overwrite" value="true">rewrite<br>
    </p>
    <p>
        <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
        <input type="submit" value="Upload files">
    </p>
</form>
<div>
    <div>Uploaded files:</div>
    <#list uploadedFiles as file>
        <div>
            <a href="http://localhost:8082/funding/file/getFile/${file.getName()}/${file.getId()?c}">${file.getName()}</a>

            <span>type</span><span>${file.getExtension()}</span>
            <span>size</span><span>${file.getSize()}</span>
            <span>version</span><span>${file.getVersion()}</span>
            <span>version</span><span>${file.getCreatedDate()?date}</span>
            <span>version</span><span>${file.getModifiedDate()?date}</span>

            <a href="http://localhost:8082/funding/file/delete/${file.getId()?c}">delete</a>

        </div>
    </#list>

</div>

enter image description here

Когда я хочу загрузить файл размером менее 10 МБ, у меня нет проблем, и мой контроллер вызывается. Если я хочузагрузить файл большего размера У меня нет никаких исключений, только это: enter image description here

A есть пустая страница. Контроллер вообще не вызывается. ControllerAdvice тоже не вызывается. Iпопытался отладить безуспешно. В некотором смысле я думаю, что запрос не отправляется в конечную точку. Но из последнего скриншота вы можете видеть, что он имеет статус 200.

Я использую стандартный MultipartResolver.

Спасибо.

В конце последолгая отладка проблемы была связана с токеном csrf, который я использовал.В некотором смысле это не было предоставлено в запросе.

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