1. 文件上传
在 Java Web 应用程序中,文件上传是常规的操作,文件上传指的是通过浏览器把用户
本地的文件上传到 Web 服务器端。
文件上传要求客户端必须用 Post 方式提交数据,并且在 form 标签的 enctype 属性值必
须 为 : "multipart/form-data" , 表 示 本 次 请 求 可 以 上 传 文 件 , 该 属 性 的 默 认 值 是
"application/x-www-form-urlencoded"。Html 标签的<input type="file"/>可以允许客户端用户
选择文件。
代码演示:文件上传客户端
<form name="fileUpload"
method="post"
action="${pageContext.request.contextPath }/upload.do "
enctype="multipart/form-data">
文件名 1:<input type="file" name="file1" /><br>
文件名 2:<input type="file" name="file1" /><br>
文件名 3:<input type="file" name="file" /><br>
普通属性:<input type="text" name="test"><br>
<input type="submit" value="上传">
</form>
文件上传的服务器端,判断如果客户端的请求时 enctype 的值为 multipart/form-data,
就会以流的形式接收客户端的数据,然后对流进行分析,分析出具体的表单值和上传文件内
容,因此这时的服务器端,不能通过简单的 request.getParameter(…)方法来接收客户端请求
的数据。由于服务器端需要对客户的请求用代码进行分析,因此出现很多专门用于文件上传
的组件来完成此类工作。常见的文件上传组件有:commons-fileupload 组件、FileUpload 组
件、COS 上传组件、SmartUpload 组件、Struts 自身的上传组件等。
下面以 COS 为例说明文件上传的应用。
COS 是 O’Reilly 的文件上传组件,上传性能非常优越,COS 上传操作可以使用 Servlet 或
者 Struts 的 Action 在服务器端进行操作。使用 COS 进行上传操作时,首先下载 COS 组件的
jar 文件,然后需要了解几个 API 的使用。
1 com.oreilly.servlet.multipart.Part
该类的每一个对象与 multipart/form-data 类型的 Form 表单中的一个<input>元素