Java Spring загрузка файлов на сервер

202
03 июня 2022, 10:50

Есть таблица с данными и кнопкой для удаления этих данных(если приложен файл). Кнопка удаления срабатывает только на первой строке. Подскажите как задействовать input type="file" на всех строках. Я понимаю, что нужно сделать по аналогии с параметрами id и text - отправлять на сервер сам файл и его имя, т.к. MultipartFile требует именно этого, но как это реализовать, не могу найти способ. Может простой html этого не сможет?

xmlns:th="https://www.thymeleaf.org"
<tbody>
    <tr th:each="mess : ${messages}">
        <td th:text="${mess.id}"></td>
        <td th:text="${mess.text}"><span></span></td>
        <td>
            <form th:action="@{/removes}" method="post" name="removes" enctype="multipart/form-data" >
                <input type="file" name="file" />
                <input type="submit" value="Удалить" style='display: block; margin-left: auto; margin-right: auto;'/>
                <input type="hidden" name="id" th:value="${mess.id}"/>
                <input type="hidden" name="text" th:value="${mess.text}"/>
            </form>
        </td>
    </tr>
</tbody>

Мой обработчик запроса:

@PostMapping("removes")
public String removes (@RequestParam Long id, MultipartFile file, Map<String, Object> model) throws IOException{
    try {
        if (!file.isEmpty()) {
                    Message messagedel = new Message(id);
                    model.put("messages", messagedel);
                    return "redirect:/search";
        } else {
            model.put("error", "Файл не выбран.");
            return "/errors";
        }
    } catch (CertificateException e) {
        model.put("error", "Выбран не файл.");
        return "/errors";
    }
}}
Answer 1
<form method="POST" action="/removes" enctype="multipart/form-data">
        <label>
            <input type="file" name="file"/>
            <button type="submit">Upload file</button>
        </label>
</form>
@PostMapping("removes")
public String removes (@RequestParam("file") MultipartFile file, Map<String,Object> model) throws IOException {
    try {
        if (!file.isEmpty()) {
                    Message messagedel = new Message(id);
                    model.put("messages", messagedel);
                    return "redirect:/search";
        } else {
            model.put("error", "Файл не выбран.");
            return "/errors";
        }
    } catch (CertificateException e) {
        model.put("error", "Выбран не файл.");
        return "/errors";
    }
}}
READ ALSO
Как в Java посчитать сколько памяти требуется функции?

Как в Java посчитать сколько памяти требуется функции?

Есть две функции, выполняющие одну и ту же задачуОдна использует матрицу, другая рекурсия

145
Интеграция приложения Android/Windows с принтером

Интеграция приложения Android/Windows с принтером

Мне нужно интегрировать приложение Windows/Android с принтером этикеток чтобы при нажатии печатался текст который я передамКакие есть подходящие...

283
Переход по введенной ссылке

Переход по введенной ссылке

Как в android при нажатии кнопки получить ссылку их EditText и затем открыть ее в браузере?

236
Зафиксировать конкретную сумму денег при оплате услуги с формы PHP

Зафиксировать конкретную сумму денег при оплате услуги с формы PHP

Имею следующую задачуНеобходимо после оплаты определённой суммы денег выслать пользователю письмо с определенным контентом

252