欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (精品)第7章上传和下载.ppt

    • 资源ID:82705555       资源大小:766KB        全文页数:31页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (精品)第7章上传和下载.ppt

    第7章 文件上传和下载文件的上传和下载是Web应用中常用的功能。一般情况下可以通过二进制编码的方式来获得请求参数的值,从而通过二进制流来获得上传文件内容。这种手动编程方式比较麻烦,需要手动地控制二进制流,相当的复杂。不过可以使用其他开源组织提供的上传项目,通过这些项目可以非常简单的完成文件上传。7.1 使用上传框架实现文件上传7.1.1 上传框架介绍 7.1.2 下载并安装Common-FileUpload框架 7.1.3 通过Common-FileUpload框架实现文件上传 7.1.4 测试文件上传 7.1.5 上传多个文件7.1.6 测试上传多个文件 7.1.7 下载并安装COS框架 7.1.8 通过COS框架实现文件上传 7.1.9 测试使用COS框架实现文件上传 7.1.1 上传框架介绍文件上传和下载,是一个Web开发应用中常用的功能。在开发中会经常需要实现文件的上传和下载。可以通过获得HTTP请求的输入流,然后通过输出流将数据保存到文件中。不过遇到了很多问题,比如说要实现非文本文件的上传,需要通过自己编写代码来实现是非常困难的事情。有时候可以不必自己去造轮子,而是使用别人造好的轮子。为什么选择使用Struts 2框架呢,也就是因为通过它来构建Web应用会变得更加简单、方便。同样可以使用一些开源的上传框架来实现文件上传,这样可以很轻松地完成应用的需求。不过其底层的实现机制也要花一点时间去了解。虽然不要去手动实现该框架,但是要能够对该框架实现原理有所掌握。下面来看看目前有哪些优秀的上传框架。目前比较流行的有Common-FileUpload框架、COS框架,这两个框架都出生豪门,其上传功能实现得非常好。而且代码封装得特别好,开发人员只需创建几个对象并调用其方法就能实现文件上传。7.1.2 下载并安装Common-FileUpload框架首先还是要去下载Common-FileUpload框架。Common-FileUpload框架是Apache开源组织下的一个项目。登录Apache的官方站点并找到jakarta项目下的Commons项目,单击此链接进入Commons项目首页,如图7-1所示。7.1.3 通过Common-FileUpload框架实现文件上传现在来看如何通过Common-FileUpload框架实现文件上传。7.1.4 测试文件上传现在来测试是否能真正地完成文件上传。首先打开用户输入页,如图7-4所示。,用户名就填写用户自己的名字吧,上传文件选择一个文件比较小点的文件,单击“上传”按钮进行上传。页面跳转到结果输出页。页面中显示了用户名以及上传的文件名,如图7-5所示。7.1.5 上传多个文件下面来看如何同时上传多个文件。在Servlet中使用了循环遍历所有的表单域,所以只要在用户输入页中增加文件域就可以了,修改代码如下所示。7.1.6 测试上传多个文件打开用户输入页,填写用户名并选择两个文件进行上传,如图7-9所示。页面跳转到结果输出页。页面中显示了用户名以及上传的文件名,如图7-10所示。7.1.7 下载并安装COS框架下面来看另一个上传框架,COS框架。COS框架是oreilly组织下的一个小项目。要获得它首先要登录其官方站点“http:/”,单击右侧导航栏中的“com.oreilly.servlet”链接进入COS项目首页,如图7-13所示。从项目首页中看到目前COS的最新版本为05Nov2002,单击其下载链接进行下载。下载完成后,得到一个名为cos-05Nov2002.zip的压缩文件包,如图7-14所示。7.1.8 通过COS框架实现文件上传现在来看如何通过COS框架来实现文件上传。首先将用户输入页和结果页稍微做些修改,将如下代码:通过Common-FileUpload框架完成上传替换成:通过COS框架完成上传COS框架的核心类为MultipartParser,这个类负责解析HTTP请求,同时还可以用来设置上传文件的最大值。可以通过MultipartParser的readNextPart()方法来获得所有的表单域。COS使用Part实例来表示所有的表单域,也就是说不管是普通表单域还是文件域,其类型都是Part。可以调用Part实例的isParam()方法来判断该表单域是不是普通表单域,同样也可以调用其isFile()来判断该表单域是不是文件域。7.1.9 测试使用COS框架实现文件上传打开用户输入页,填写用户名并选择两个文件进行上传,如图7-15所示。页面跳转到结果输出页。页面中显示了用户名以及上传的文件名,如图7-16所示。7.2 基于Struts 2完成文件上传前面介绍了如何通过Common-FileUpload框架和COS框架实现了文件上传。Struts 2并没有提供上传组件,而是通过调用这些上传框架来实现的上传。Struts 2对于这些上传框架进行了进一步封装,从而更加简化了文件上传。7.2.1 配置上传解析器前面分别通过Common-FileUpload框架和COS框架实现了文件上传,下面来看如何基于Struts 2来完成文件上传。前面提到过Struts 2并没有提供上传组件,而是通过调用这些上传框架来实现的上传,那么如何在Struts 2中配置这些上传框架呢?首先打开导入struts2-core-2.0.11.1.jar库文件,找到org.apache.struts2包下的default.properties资源文件,代码如下所示。在该资源文件中给出了许多的Struts 2的默认配置,其中可以看到Struts 2默认使用jakarta作为其文件上传的解析器,代码如下所示。#Parser to handle HTTP POST requests,encoded using the MIME-type multipart/form-data#struts.multipart.parser=cos#struts.multipart.parser=pellstruts.multipart.parser=jakarta7.2.2 实现文件上传Action下面就来看如何基于Struts 2完成单个文件上传。首先创建用户输入页,该页面仅仅包含一个表单,用来输入用户名以及选择用来上传的文件,表单提交到upload.action,代码如下所示。文件上传 Struts 2完成上传 用户名:上传文件:7.2.3 配置文件上传Action在struts.xml文件中配置文件上传Action。定义upload的Action,指定其实现类为net.hncu.struts2.action.UploadAction。为了能够接受中文参数值,设置参数编码为gb2312,代码如下所示。/result.jsp/upload.jsp7.2.4 测试文件上传打开用户输入页,填写用户名并选择文件进行上传,如图7-19所示。页面跳转到结果输出页。页面中显示了用户名以及上传的文件名,如图7-20所示。7.3 文件上传高级配置前面介绍了如何基于Struts 2完成文件上传,Struts 2还提供了文件上传的高级配置从而实现文件保存目录的配置、文件过滤以及输出错误提示等。7.3.1 配置文件保存目录Struts 2提供了文件上传的高级配置用来实现保存目录的配置。首先在Action中添加savePath属性,该属性用来封装上传文件保存目录,为该属性添加setter和getter方法,代码如下所示。7.3.2 实现文件过滤Struts 2提供了文件上传的高级配置用来实现文件的过滤。要实现文件过滤,只需配置文件上传拦截器的属性。文件上传拦截器中有如下两个属性。protected Long maximumSize;protected String allowedTypes;maximumSize:该属性用来指定上传文件大小的最大值,单位为字节(Byte)。allowedTypes:该属性用来指定允许上传的文件类型。下面在struts.xml文件中配置该文件上传拦截器,指定上传文件大小的最大值为50KB,指定上传文件的类型为BMP或者JPG。7.3.3 输出错误提示现在限制了文件上传的类型以及大小,那么如果用户提交不符合要求文件应该给出错误信息提示。很幸运,Struts 2的文件上传拦截器FileUploadInterceptor帮助做到了这一点。FileUploadInterceptor拦截器将错误信息保存到fileldError中,FileUploadInterceptor拦截器代码如下所示。7.4 Struts 2实现上传多个文件前面介绍的都是上传一个文件,其实Struts 2也可以很方便地实现多文件上传。如果页面中有多个文件域需要实现文件上传,则只需在Action为每个文件域指定三个属性分别用来封装上传文件、上传文件类型、上传文件名。7.4.1 使用数组实现上传多个文件前面介绍的都是上传单个文件,下面来看如何实现上传多个文件。可以选择在Action为每个文件域指定三个属性分别用来封装上传文件、上传文件类型、上传文件名。这样确实可以实现多个文件的上传,但是这样使得代码过于臃肿,而且失去了灵活性。如果以后要添加一个文件域,那就必须在Actionh中为其添加相应的属性。这时可以使用数组或者List来封装所有的文件域,不过前提是这些文本域的name属性必须相同。下面新建一个用户输入页,添加两个文件域,其name属性都为myFile。7.4.2 测试使用数组实现上传多个文件打开用户输入页,填写用户名并选择文件进行上传,如图7-26所示。页面跳转到结果输出页。页面中显示了用户名以及上传的文件名,如图7-27所示。7.4.3 使用List实现上传多个文件这里还可以使用List来处理多个文件的上传,这种方式和使用数组基本类似。只需要将使用数组类型封装文件域中的数组类型替换成List类型就可以了。7.5 文件下载通过Struts 2的文件下载支持可以轻松地完成文件下载,而且还可以实现中文文件名下载。通过Struts 2文件下载支持与拦截器相结合可以实现文件的下载权限控制。7.5.1 使用Struts 2配置文件下载前面介绍的都是文件上传的知识,下面来看如何实现文件下载。有朋友肯定会问提出,实现文件下载很简单啊!只要给出该文件的超链接不就行了吗?那下面就按照这样的方法,使用超链接来实现文件下载。首先在Web项目根目录下添加一个文件夹dowload,在该文件夹下放置一个压缩文件1.zip。编写下载页面dowload.jsp,添加该文件的下载链接,代码如下所示。文件下载 文件下载 链接方式下载 7.5.2 实现文件下载Action新建文件下载Action,该Action与以前创建的Action没有太大的不同。不过如果要实现文件下载,必须为该Action提供一个返回InputStream流的方法,代码如下所示。package net.hncu.struts2.action;import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownloadAction extends ActionSupport/该方法返回需要被下载文件的输入流public InputStream getDownload()return ServletActionContext.getServletContext().getResourceAsStream(/download/复件1.zip);public String execute()throws Exception return SUCCESS;这里使用ServletContext的getResourceAsStream()返回被下载文件的输入流。7.5.3 配置该文件下载Action下面需要对文件下载Action进行配置,这里与前面不同的是需要配置该Action一个类型为stream的结果。可以通过struts-default.xml文件查看stream结果的配置,代码如下所示。从stream结果的配置可以看出,其对应的实现类为StreamResult,代码如下所示。public class StreamResult extends StrutsResultSupport。protected String contentType=text/plain;protected String contentLength;protected String contentDisposition=inline;protected String inputName=inputStream;protected InputStream inputStream;protected int bufferSize=1024;。7.5.4 动态设置下载文件路径前面通过Struts 2的文件下载支持实现了文件下载,但是这里有一个问题。如果想要修改文件的下载地址,就必须修改文件下载Action,这样比较麻烦。下面就来看如何动态地设置下载文件路径。首先在文件下载Action中添加一个属性filePath表示下载文件路径,并添加其setter和getter方法,代码如下所示。7.5.5 使用拦截器增加下载权限控制通过Struts 2的文件下载支持,还可以为下载文件添加权限控制。下载权限控制也是非常常用的,比如一些下载站点,都要求登录以后才能下载。那如何才能实现文件下载权限控制呢?答案就是使用拦截器。下面来看如何通过使用拦截器增加下载权限控制。首先将以前的登录案例及权限控制拦截器复制到这个项目中,然后为下载Action中配置权限控制拦截器据,代码如下所示。7.6 小结本章首先介绍了如何下载并安装Common-FileUpload框架以及COS框架,如何分别通过这两个框架实现文件上传。重点介绍了如何基于Struts 2完成文件下载,并介绍了一些常用的配置,如:配置文件保存目录、实现文件过滤、输出错误提示。还介绍了如何使用数组和List实现上传多个文件。本章还介绍了如何通过Struts 2的文件下载支持来实现文件下载,并通过结合拦截器实现了下载权限控制。

    注意事项

    本文((精品)第7章上传和下载.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开