文档详情

第2章 Servlet程序开发.ppt

发布:2017-06-03约1.86万字共76页下载文档
文本预览下载声明
2.6 用servlet读写文件 2.6.1 上传文件 HttpServletRequest 提供的两个新方法如下所示,它们用于从请求中解析出上传的文件: Part getPart(String name) CollectionPart getParts() 前者用于获取请求中给定 name 的文件,后者用于获取所有的文件。每一个文件用一个 javax.servlet.http.Part 对象来表示。该接口提供了处理文件的简易方法,比如 write()、delete() 等。结合 HttpServletRequest 和 Part 来保存上传的文件变得非常简单,如下所示: Part file = request.getPart(file); file.write(filename); 需要注意的是,如果请求的 MIME 类型不是 multipart/form-data,则不能使用上面的两个方法,否则将抛异常。 界面文件中,文件上传部分代码 form action = /ServletTrain/UpLoad method=post“ enctype=multipart/form-data target=workspace input type=file name=file input type=submit name=upload value=文件上传 /form Servlet中,文件上传部分代码 2.6 用servlet读写文件 2.6.1 下载文件 Servlet类也可以用来响应客户端的文件下载请求。Servlet实现文件下载是通过对响应对象response的操作来完成的。 首先需要在response中对需要下载的文件类型、头信息、文件长度等信息进行设置。 然后读取服务器上文件的内容并写入到response的输出流中。 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String filepath = /WEB-INF/web.xml;//服务器上文件的相对路径 //服务器上文件的绝对路径 String fullFilePath = getServletContext().getRealPath(filepath); File file = new File(fullFilePath);//打开文件,创建文件对象 if (file.exists()) {//如果文件存在 //获得文件名,并采用UTF-8编码方式进行编码,以解决中文问题 String filename = URLEncoder.encode(file.getName(),UTF-8); response.reset();//重置response对象 //设置文件的类型,xml文件采用text/xml类型,详见MIME类型说明 response.setContentType(text/xml); //设置HTTP头信息中内容 response.addHeader(Content-Disposition, attachment; filename=\ + filename + \); int fileLength = (int) file.length();//设置文件长度 response.setContentLength(fileLength); if (fileLength != 0) {//如果文件长度大于0 InputStream inStream = new FileInputStream(file);//创建输入流 byte[] buf = new byte[4096]; //创建输出流 ServletOutputStream servletOS = response.getOutputStream(); int readLength
显示全部
相似文档