无法将字符串转换为 MultipartFile

Cannot convert String to MultipartFile

请帮我解决我的问题! 我有 bootstrap 个文件输入,文件包括:

    <link href="/assets/css/fileinput/fileinput.css" rel="stylesheet" type="text/css">
<link href="/assets/css/fileinput/fileinput-rtl.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/assets/js/fileinput/fileinput.js"></script>
<script type="text/javascript" src="/assets/js/plugins/fileinput/piexif.js"></script>
<script type="text/javascript" src="/assets/js/plugins/fileinput/sortable.js"></script>
<script type="text/javascript" src="/assets/js/plugins/fileinput/purify.js"></script>

我还有一个用于 fileInput 的宏:

<#macro fileInputBind path required=false fileMask="">
    <@spring.bind path/>
<div class="form-group">
    <@label path required/>
    <#assign replacedPath = path?replace(".", "-") />
    <#assign fileInputId = "${replacedPath}" />
    <div class="col-md-12">
        <input id="${fileInputId}" name="${spring.status.expression}" type="file" class="form-control file-styled"
               accept="${fileMask}">
    </div>
</div>
</#macro>

这是我的 ftl 元素:

<@form.fileInputBind "incidentRovdCreateForm.attachment"/>

我的表单中的变量来处理这个字段:

private MultipartFile attachment;

但是当@PostMapping 执行的时候我在这部分得到了一个错误:

if (bindingResult.hasErrors())
            return new ModelAndView("incident-rovd/create")
                    .addObject("typeIncident1", incidentTypeLevel1Repository.findAll())
                    .addObject("typeIncident2", form.getIncidentTypeLevel1() == null ? Collections.emptyList() : incidentTypeLevel2Repository.findAllByParent(form.getIncidentTypeLevel1()))
                    .addObject("typeIncident3", form.getIncidentTypeLevel2() == null ? Collections.emptyList() : incidentTypeLevel3Repository.findAllByParent(form.getIncidentTypeLevel2()))
                    .addObject("incidentRovdCreateForm", form);

错误: 无法将类型 'java.lang.String' 的 属性 值转换为 属性 'attachment' 所需的类型 'org.springframework.web.multipart.MultipartFile';嵌套异常是 java.lang.IllegalStateException:无法将类型 'java.lang.String' 的值转换为 属性 所需的类型 'org.springframework.web.multipart.MultipartFile' 'attachment':找不到匹配的编辑器或转换策略。

我有什么问题?

我用HTML + JavaScript作为前端遇到了同样的问题。如果bean的文件属性不是必需的,以下可能对你有帮助:

// js
var formData = new FormData(document.getElementById("yourFormId"));

//TestBean.java    
@Transient
private MultipartFile file;

此方法避免了“无法将字符串转换为 MultipartFile”错误。