我有一个Spring表单来保存用户个人资料,该用户个人资料具有用于将身份证明存储为图像的字段。在后端,将图像上传到aws s3存储桶,并将相应的url保存到本地数据库中。
<form:form action="${addpartner}" id="addpartner" modelAttribute="partnerForm" enctype="multipart/form-data" cssClass="form form-horizontal">
//skipping other fields
<div class="form-group row">
<form:label path="idProofFile" cssClass="col-md-3 label-control">
<spring:message code="partner.idproof"></spring:message><span class="danger">*</span>
</form:label>
<div class="col-md-9">
<form:input path="idProofFile" id="idProofFile" type="file" cssClass="form-control" />
</div>
</div>
</form>
任何用户的id_proof字段的数据库条目如下所示:https://s3.amazonaws.com/mybucket/1562773577867-Capture.JPG
在我单击“编辑”按钮以编辑现有用户的一些详细信息之前,一切都很好。在这种情况下,所有其他字段(如姓名,电子邮件)都将保存在Db中,而不是文件。它为空,可以理解为文件驻留在s3中,而不是db中。
表单支持bean
private Long partnerId;
private String firstname;
private String lastname;
private String email;
private Long cityId;
private String cityname;
private String username;
private String password;
private String mobileno;
private String idCardNumber;
private String idProof;
private MultipartFile idProofFile;
private String address;
private String termsandconditions;
解决此问题的一种方法是从s3下载文件,然后显示编辑表单并将其设置为dto的 MultipartFile idProofFile 。尽管我可以从s3下载文件,但是我面临的挑战是将File类型转换为Multipart类型。
是否有更好的方法来完成所有这些工作。我只想确保当我单击“编辑”按钮时,文件字段不应为空,并且应显示该用户存在的文件名。
EDIt -1
我创建了一个引用this的自定义多部分类,现在可以将字节数组转换为多部分并将其设置为dto。但是字段仍然显示“没有选择文件”。