Thymeleaf 表单发送空的多部分文件

问题描述 投票:0回答:1

我正在使用 Thymeleaf 尝试同时上传图像和图片,但是当我尝试这样做时,它会返回我的对象中的所有其他信息,但图像本身是空的

Thymeleaf 的实现如下:

<form id="application" th:action="@{/admin/newapplication}" th:object="${application}" method="post" enctype="multipart/form-data">
        <h1>Add Application</h1>
        <div class="input">
            <input type="text" name="applicationName" placeholder="Application Name" required>
            <i class='bx bxs-user'></i>
        </div>
        <div class="input">
            <input type="text" name="password" placeholder="Password to access application" required>
            <i class='bx bxs-lock-alt' ></i>
        </div>
        <input type="file" name="imageFile" accept="image/x-png,image/jpeg,image/jpg"/>
        <div class="input">
            <select name="applicationType" id="Application Type">
                <option value="admin">Navigation</option>
                <option value="user">Waste Management</option>
                <option value="user">Energy Consumption</option>
            </select>
        </div>

        <button type="submit" class="btn">Register Application</button>
    </form>

控制器如下所示:

@PostMapping(value = "/newapplication", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String addApplication(@ModelAttribute Application application, @RequestParam(value = "file",required = false) MultipartFile file) throws IOException {
    applicationRepository.save(application);
    fileService.uploadImage(file.getOriginalFilename(),file);
    return "addApplication";
}
java spring-boot thymeleaf
1个回答
0
投票

试试这个:

@PostMapping(value = "/newapplication", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String addApplication(@ModelAttribute Application application,
                             @RequestParam(value = "imageFile",required = false) MultipartFile file) throws IOException {

    applicationRepository.save(application);
    fileService.uploadImage(file.getOriginalFilename(),file);
    return "addApplication";
}

注意多部分文件名称的更改:

value = "imageFile"

© www.soinside.com 2019 - 2024. All rights reserved.