- 1、本文档共76页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 Servlet程序开发
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
文档评论(0)