文件上载组件
提供了输入字段和浏览按钮,该按钮可以在本地系统上打开文件选择器对话框,用户可以在其中选择文件或在输入字段中键入文件名。提交页面后,文件内容的副本将被发送到 Web 应用程序。此组件可用于收集文本文件、图像文件和其他数据。已上载文件的内容是与该文件的一些相关信息存储在一起的,这些相关信息包括文件名、大小和 MIME 类型(如纯文本或 jpeg 图像)。
此组件类似于 HTML <input type="file"> 元素。
width 设置添加到 style 属性中,并且该设置小于 columns 属性中的设置,则 Internet Explorer 仅遵循 width 设置,而 Mozilla 浏览器将忽略此设置并根据 columns 属性中的字符数设置宽度。文件上载组件使用过滤器,该过滤器是在 Web 应用程序部署描述符中配置的 com.sun.webui.jsf.util.UploadFilter 对象。UploadFilter 使用 Apache Commons fileupload 包。在以下两种情况下,您可能需要更改这些设置:
web.xml 文件中修改 UploadFilter 过滤器条目的 sizeThreshold 参数,可以更改此阈值(如下面所述)。web.xml 文件中修改 UploadFilter 过滤器条目的 maxSize 参数,可以更改最大的文件大小(如下面所述)。
maxSize 参数为负值,则表示没有文件大小限制。出于安全方面的原因,建议不要将该参数设置为负值。例如,如果文件大小不受限制,恶意用户可能会使用非常大的文件对您的站点发起拒绝服务攻击。web.xml 文件中更改 UploadFilter 对象的设置,请执行以下操作: maxSize 和 sizeThreshold 参数的值。上载文件的内容及其相关信息存储在 com.sun.webui.jsf.model.UploadedFile 的实例中。通过使用该对象,可以获取作为 String 的文件内容,或者将内容写入硬盘,还可以获取文件名和文件大小等属性。为了节省内存,内容和文件数据仅在上载文件的 HTTP 请求过程中可用。要访问上载文件的内容,请将 uploadedFile 属性绑定到类型为 com.sun.webui.jsf.model.UploadedFile 的 Bean 属性。请使用 setter 或 action 方法来处理文件。
UploadedFile 接口具有多种方法,用于获取文件的名称和大小、确定文件的 MIME 类型(如 text/plain 或 image/jpeg)、按字节或按 String 获取文件的内容以及将内容写入硬盘。或者,如果您已设置此文件上载组件的 preservePath 属性,则可以通过调用 UploadedFile Bean 属性的 getClientFilePath() 方法从该属性获取保存的路径。要了解更多信息,请在 Java 编辑器中右键单击声明语句中的 UploadedFile,然后从弹出式菜单中选择“显示 Javadoc”。
validate 方法上,以便插入代码来验证组件的值。processValueChange 方法上,以便插入在该组件的值发生更改时执行的代码。如果您已经从组件的弹出式菜单中选择了“更改时自动提交”,则会执行此方法,以在组件的值发生更改时提交页面。当组件是虚拟表单的一部分时,此技术非常有用。common_timeoutSubmitForm(this.form, 'component-id');。在运行时,如果用户更改了组件值,该代码将导致自动提交表单。在提交表单后,将在服务器上进行转换和验证,执行任何值更改侦听程序方法,然后重新显示页面。
配置为“更改时自动提交”的组件可以使用虚拟表单来限制在提交表单时处理的输入字段。如果定义了自动提交组件来提交虚拟表单,则在进行自动提交时,将只处理该虚拟表单中的参与者。
text 属性绑定到对象或数据提供器。有关详细信息,请参见“绑定到数据”对话框。uploadedFile 属性绑定到类型为 com.sun.webui.jsf.model.UploadedFile 的 Bean 属性。