首页 理论教育 JavaEE开发教程-如何实现Servlet文件上传

JavaEE开发教程-如何实现Servlet文件上传

时间:2023-11-03 理论教育 版权反馈
【摘要】:Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器。表单 action 属性应该设置为在后端服务器上处理上传的 Servlet 文件。新建名称为chapter3_uplod_file的Web工程,在WebContent目录下新建名称为upload.jsp的文件以及在src目录下新建名称为UploadFileServlet的Servlet。图3.20 文件上传图3.21 文件上传成功界面程序说明:在图3.20中单击“浏览”选择要上传的文件后,单击“上传”,表单提交到UploadFileServlet类的doPost()方法处理。UploadFileServlet通过注解方式进行配置,其中@WebServlet配置请求路径,@MultipartConfig用来配置文件上传的相关参数。

JavaEE开发教程-如何实现Servlet文件上传

Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器。上传的文件可以是文本文件、图像文件或其他任何文档。使用表单上传文件需要注意以下几点:

(1)表单 method 属性应该设置为Post方法,不能使用Get方法。

(2)表单 enctype 属性应该设置为 multipart/form-data。

(3)表单 action 属性应该设置为在后端服务器上处理上传的 Servlet 文件。

(4)上传单个文件,应该使用单个带有属性 type= “file”的 <input .../> 标签。

为了允许多个文件上传,基于HTML5的input标签设置multiple="multiple"的属性。

【例3.5】文件上传。

(1)新建名称为chapter3_uplod_file的Web工程,在WebContent目录下新建名称为upload.jsp的文件以及在src目录下新建名称为UploadFileServlet的Servlet。

upload.jsp页面的内容为:

UploadFileServlet.java内容如下:

success.jsp页面内容如下:(www.xing528.com)

error.jsp页面内容如下:

(2)部署工程到Tomcat,然后启动Tomcat。在浏览器的地址栏中输http://localhost:808/chapter3_uplod_file/upload.jsp,上传一个文件,结果如图3.20,图3.21所示。

图3.20 文件上传

图3.21 文件上传成功界面

程序说明:

在图3.20中单击“浏览”选择要上传的文件后,单击“上传”,表单提交到UploadFileServlet类的doPost()方法处理。UploadFileServlet通过注解方式进行配置,其中@WebServlet配置请求路径,@MultipartConfig用来配置文件上传的相关参数(处理文件上传的Servlet必须配置)。fileSizeThreshold将告诉Web容器文件必须达到多大才能写入到临时文件,本例是5 MB,即文件小于5 MB将保存到内存中,请求完成由垃圾回收器回收,文件超过5 MB,容器将把文件保存到location指向的临时文件,请求完成后容器从磁盘中删除该文件;location告诉浏览器在哪里存储临时文件,可忽略,让应用服务器使用它默认临时目录即可;maxFileSize设置上传文件的最大值,本例配置的参数要求上传单个文件大小不能超过20 MB,一次请求不能超过40 MB,文件数量不限。如果要在web.xml文件中配置,作用和注解配置一样:

在Servlet3.0中获取文件上传组件通过语句Part p = request.getPart(“表单文件组件的name名”);获取上传文件的文件名称通过语句part.getHeader(“content-disposition”);content-disposition的内容类似于:Content-Disposition: form-data; name=“uploadFile”;filename=“info.xlsx”,通过解析Content-Disposition内容能够获取上传文件的文件名称。在本例中将上传文件保存在项目部署绝对路径/uploadFile文件夹下。最后通过part.getInputStream()方法获取文件输入流进行读取文件,通过文件输出流将文件保存在磁盘。如果保存成功,将文件的路径设置到req对象的属性,再通过服务器转向跳转到success.jsp页面,在success.jsp页面获取到内置对象request的属性将文件的下载路径通过超链接展现在浏览器,单击超链接时弹出如图3.21所示的界面。如果下载失败则请求重定向到error.jsp页面。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈