File upload 在SpringMVC中从自定义表单标记中上载文件 上下文
应用程序管理员端的一部分要求用户编辑各种类型的内容,包括使用富文本编辑器或使用文件生成应用程序“客户端”用户可以看到的内容。这是一种特定于领域的CMS lite 因为这个“内容”可以在应用程序的各个部分中使用,所以在我们的一些领域实体中,它被作为一个单独的关系包含。我们决定创建自己的标记库,定义一些表单字段,管理员编辑包含内容的实体时,这些表单字段可用于编辑此内容 问题 我们希望能够做到以下几点File upload 在SpringMVC中从自定义表单标记中上载文件 上下文,file-upload,spring-mvc,taglib,File Upload,Spring Mvc,Taglib,应用程序管理员端的一部分要求用户编辑各种类型的内容,包括使用富文本编辑器或使用文件生成应用程序“客户端”用户可以看到的内容。这是一种特定于领域的CMS lite 因为这个“内容”可以在应用程序的各个部分中使用,所以在我们的一些领域实体中,它被作为一个单独的关系包含。我们决定创建自己的标记库,定义一些表单字段,管理员编辑包含内容的实体时,这些表单字段可用于编辑此内容 问题 我们希望能够做到以下几点 <form:form modelAttribute=...> <olo:c
<form:form modelAttribute=...>
<olo:content-editor path="content"/>
<!-- Other form fields for this entity -->
<form:.../>
<form:.../>
</form:form>
可用于替换与基于文件的内容关联的文件
问题在于Spring文档表明文件上传要求表单具有enctype
来定义它正在发送多部分表单数据。由于文件上传是标签的一部分,而不是表单本身,我们发现这是不可取的。我们希望能够在表单中使用olo:content editor
标记,而无需更改表单enctype
属性。这可能吗
可能的解决方案
我们可以想到两种客户端黑客可能会解决我们的问题,但它们似乎都是相当丑陋的解决方案:
- 在基于文件的内容标记中包含一个脚本,该脚本在加载时更改表单
,以便始终将其设置为适当的类型。(非常难看。)enctype
- 将文件数据作为常规隐藏表单字段提交,其中的数据是通过使用HTML5文件API设置的(管理员使用兼容的浏览器。这看起来不那么难看,但仍然不是最佳解决方案。)
<input type="file" name="file/>