我正在开发一个应用程序,您可以在其中使用表单将项目注册到数据库。表单具有一些文本输入字段和一个用于上载项目图像的输入字段。
如果我尝试添加新项目,则图像上载字段和所有其他字段均为空(应为空)。但是,当我要更新模型时,只有文本字段会从数据库中检索保存的信息。这意味着我必须上传相同的图像才能发布表单/更新信息,即使我没有做任何更改。有没有一种方法可以将服务器中的图像“预上传”到编辑表单中,从而使用户不必上传图像?
我正在使用Thymeleaf进行查看。
用于保存项目的项目服务方法:
@Override
public void save(Item item, MultipartFile file) {
try {
String IMAGE_LOCATION = "/src/main/resources/static/images/";
String projectDir = System.getProperty("user.dir");
String totalPath = projectDir + IMAGE_LOCATION;
Path path = Paths.get(totalPath + file.getOriginalFilename());
Files.copy(file.getInputStream(),path);
} catch (IOException e) {
e.printStackTrace();
}
item.setImageName(file.getOriginalFilename());
itemRepository.save(item);
}
查看:
<form th:action="@{/save}" method="post" modelAttribute="item" enctype="multipart/form-data">
<input type="hidden" th:value="${item.item_id}" name="item_id">
<div class="form-group">
<input type="text" class="form-control" th:value="${item.name}" placeholder="Name" name="name">
</div>
<div class="form-group">
<input type="text" class="form-control" th:value="${item.quantity}" placeholder="Quantity" name="quantity">
</div>
<div class="form-group">
<input type="file" class="form-control" name="file"/>
</div>
<button class="btn btn-success">Add item</button>
</form>