- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中的文件操作培训资料.ppt
主讲:何老师 4.8 文件上传 客户通过一个JSP 页面,上传文件给服务器时,该JSP 页面必须含有 File 类型的表单,并且表单必须将 ENCTYPE 的属性值设成 “multipart/form-data”,File 类型表单如下所示: Form action= “ 接受上传文件的页面 ” method= “post” ENCTYPE=“ multipart/form-data” Input Type= “File” name= “picture” /Form JSP 引擎可以让内置对象request 调用方法getInputStream()获得一 个输入流,通过这个输入流读入客户上传的全部信息,包括文件的内容以及表单域的信息。 例子 13 下面的中,客户通过Example4_13.jsp 页面上传如下的文本文件A.txt 。 A.txt: 你好,我们正在学习文件的上传,request 调用getInpuStream()可以获得一个输入流,通过这个输入流可以读取客户上传的全部信息,包括表单的头信息以及上传文件的内容。以后将讨论如何去掉表单的信息,获取文件的内容。 在accept.jsp 页面,内置对象request 调用方法getInputStream()获得一个输入流in、用FileOutputStream 创建一个输出流o。输入流in 读取客户上传的信息,输出流o 将读取的信息写入文件B.txt,该文件B.txt 被存放于服务器的F:/2000 中。 Example4_13.jsp 注 :文件B.txt 的前4 行(包括一个空行)以及倒数 5 行(包括一个空行)是表单域的内容,中间部分是上传文件A.txt 的内容。 在下面的例子中我们通过输入输出流技术获取文件的内容,即去掉表单的信息。首先,我们将客户提交的全部信息保存为一个临时文件,该文件的名字是客户的session 对象的Id,不同客户的这个Id 是不同的。然后读取该文件的第2 行,这一行中含有客户上传的文件的名字,获取这个名字。再获取第4 行结束的位置,以及倒数第 6 行的结束位置,因为这两个位置之间的内容是上传文件的内容。然后将这部分内容存入文件,该文件的名字和客户上传的文件的名字保持一致。最后删除临时文件。 例子 14 客户上传一个图象文件,还可以连接到 showImage.jsp 页面查看这个上传图象的效果。我们可以允许客户将文件上传到服务器的任何一个目录,为了让客户能查看上传图象的效果,下面的例子 14 将上传文件保存到一个 web 服务目录 D:/tomcat/jakarta-tomcat-4.0/webapps/examples 中,假设服务器的 IP是:00。 4.9 文件下载 JSP 内置对象response 调用方法getOutputStream()可以获取一个指向客户的输出流,服务器将文件写入这个流,客户就可以下载这个文件了。 当JSP 页面提供下载功能时,应当使用response 对象向客户发送HTTP 头信息,说明文件的MIME 类型,这样客户的浏览器就会调用相应的外部程序打开下载的文件。例如,Ms-Word 文件的 MIME 类型是 application/msword,pdf 文件的 MIME 类型是 application/pdf。 点击点击资源管理器→工具→文件夹选项→文件类型可以查看文件的相应的MIME 类型。 例子 15 :客户在 Example4_15 页面点击超链接下载一个zip 文档。 例子15 Example4_15.jsp 注:如果在 fileLoad.jsp 中取消下列语句: response.setHeader(Content-disposition,attachment;filename=+book.zip); 那么客户的浏览器将调用相应的外部程序,在当前位置直接打开 下载的文件。 4.10 分页读取文件 可以借助 session 对象实现分页读取文件。当客户向JSP 页面发出请求时,JSP 页面建立一个指向该文件的输入流,通过文件流每次读取文件的若干行。 我们已经知道 HTTP 协议是一种无状态协议。一个客户向服务器 发出请求(request )然后服务器返回响应(respons ),连接就被关闭了。在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一客户。也就是说,如果我们请求每次读取 10 行,那么第一 次请求会读取文件的前 10 行,当我们第 2 次请求时,JSP 页面会重 新将输入流指向文件,
文档评论(0)