@KaizerSX

Как сохранить в таблице картинку при изменении других полей?

Есть таблица куда тянутся данные из формы в котором несколько текстовых input полей и один input поле с типом "file" (туда загружается картинка).

Проблема в том, что если изменить что-то кроме картинки, то картинка не сохранится после обновления данных.

Вот таблица (она находится на странице index.mustache (шаблонизатор)

<table  class="table_col">
    <tr>
        <th>Код ошибки</th>
        <th>Описание</th>
        <th>Номер заявки(Naumen)</th>
        <th>Номер задачи (Jira)</th>
        <th>Старый номер задачи(Jira)</th>
        <th>Изображение</th>
        <th>Решение</th>
        <th>Статус</th>
        <th>Дата</th>
    </tr>
 {{#RECORD}}


<tr>
    <td bgcolor="#6759EE" id="maintd">{{tag}}</td>
    <td style="white-space:pre; ">{{description}}</td>
    <td>{{naumen}}</td>
    <td>{{jiraID}}</td>
    <td>{{oldjiraID}}</td>
    <td><a href="/downloadfile/{{id}}"><img src="/downloadfile/{{id}}"  width="180" height="180"></a></td>
    <td style="white-space:pre; ">{{resolution}}</td>
    <td >{{status}}</td>
    <td>{{date}}</td>
    <td><a href="edit/{{id}}">изменить</a></td>
    <td><a href="delete/{{id}}">удалить</a></td>
</tr>
{{/RECORD}}
</table>


При нажатии на "изменить" (в таблице) для записи мы попадаем на другую страницу (editrecord.mustache).

Вот здесь я хочу поменять текстовое поле какое-нибудь,но не хочу менять картинку. Какой код мне внести? При этом должна быть возможность поменять картинку , если я это захочу.

<div class="divtextform">
    <form action="/editrecordform" enctype="multipart/form-data" method="post"  class="contact_form">

        <input type="hidden" name="id" value="{{#editrec}}{{id}}{{/editrec}}" >
        <label for="tag">Код ошибки:</label> <input type="text" name="tag"  value="{{#editrec}}{{tag}}{{/editrec}}">
        <br>
        <label for="description">Описание:</label><textarea name="description" id="" cols="100" rows="10" wrap="hard">{{#editrec}}{{description}}{{/editrec}}</textarea>
        <br>
        <label for="naumen">Номер в Naumen:</label> <input type="text" name="naumen" value="{{#editrec}}{{naumen}}{{/editrec}}">
        <br>
        <label for="jiraID">ID в JIRA:</label> <input type="text" name="jiraID" value="{{#editrec}}{{jiraID}}{{/editrec}}">
        <br>
        <label for="oldJiraID">ID в JIRA (архив):</label> <input type="text" name="oldjiraID"  value="{{#editrec}}{{oldjiraID}}{{/editrec}}">
        <br>
        <label for="resolution">Решение:</label><textarea name="resolution" id="" cols="100" rows="10" wrap="hard"></textarea>
        <br>
        <button type="submit">изменить</button>
    </form>
</div>


Контроллеры:

@GetMapping("/downloadfile/{id}")
    public ResponseEntity<ByteArrayResource> downloadFile(@PathVariable Integer id){


        Piro piro = repos.findById(id).get();

        return ResponseEntity.ok()
                .contentType(MediaType.parseMediaType(piro.getDoctype()))
                .header(HttpHeaders.CONTENT_DISPOSITION,"attachment:filename=\""+piro.getDocname()+"\"")
                .body(new ByteArrayResource(piro.getData()));
    }



@GetMapping("edit/{id}")
    public  String editRecord(@PathVariable Integer id,Map <String,Object> model){

        Piro piro=repos.getOne(id);
        model.put("editrec",piro);
        return "editrecord";

    }


@PostMapping("/editrecordform")
public String getEditedInfo(@RequestParam Integer id, @RequestParam String description, @RequestParam String tag, @RequestParam String naumen, @RequestParam String jiraID, @RequestParam String oldjiraID,@RequestParam String resolution ) throws IOException {


Piro piro=repos.getOne(id);

piro.setDescription(description);
piro.setTag(tag);
piro.setNaumen(naumen);
piro.setJiraID(jiraID);
piro.setOldjiraID(oldjiraID);
piro.setResolution(resolution);


    try {

        piro.setStatus(restClient.getJiraStatus(piro.getJiraID()));

    }

    catch (HttpClientErrorException e){

        piro.setStatus("не известно");

    } catch (JSONException e) {
        e.printStackTrace();
    }

    piro.setDate(datev);
    repos.save(piro);

return "redirect:/";

    }



@PostMapping("fillform")

    public String addData(@RequestParam String description,@RequestParam String tag,@RequestParam String naumen,@RequestParam String jiraID, @RequestParam String oldJiraID, @RequestParam MultipartFile file, @RequestParam String resolution){

        try {
            Piro data = new Piro(description, tag, naumen, jiraID, oldJiraID, file.getBytes(),resolution, file.getOriginalFilename(),file.getContentType(),datev);
            try {

                    data.setStatus(restClient.getJiraStatus(data.getJiraID()));

            }

            catch (HttpClientErrorException e){

                    data.setStatus("не известно");

                }



            repos.save(data);

        }

        catch (Exception e) {
            e.printStackTrace();
        }
        return "redirect:/";


    }
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Как сохранить в таблице картинку при изменении других полей?

А зачем вы удаляете / изменяете картинку при изменении полей?
Допустим, что есть некий эндпоинт, куда нужно отправлять POST запрос для загрузки картинки и принимает он MultiPartFile.
Соответственно, при загрузки новой картинки можно отправить аякс запрос на этот урл, а id картинки назначить для сущности, которая добавляется из формы.
А значит, при изменении других данных вы никоим образом не будете изменять картинку и соответственно, она не удалится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект