web-10

一.Web文件上传与下载
 概述
将本地文件上传到服务器端,从服务器端下载文件到本地的过程。例如目前网站需要上传头像、上传下载图片或网盘等功能都是利用文件上传下载功能实现的。

原理

文件上传

1.1 客户端浏览器通过文件浏览框,选择需要上传的文件内容(其中包括文件路径及文件内容)。
1.2 客户端浏览器通过点击上传按钮,将本地文件上传到服务器端。
1.3 服务器端通过程序接收本地文件内容,并将其保存在服务器端磁盘中。

文件下载

1.1 客户端浏览器通过点击下载按钮,将服务器端保存的文件下载到本地磁盘。
1.2 服务器端通过程序将服务器端文件响应给客户端。
 

 实现方式
(1) SmartUpload组件
(2) Apache CommonsFileUpload组件
(3) Servlet 3.0 文件上传

SmartUpload组件
1.核心类

        SmartUpload

        Files

        File

        Request

2.SmartUpload

    2.1概述

        该类完成上传下载工作。

    2.2上传文件使用的方法

        public final void initialize(javax.servlet.jsp.PageContext pageContext) 

    (1)执行上传下载的初始化工作,必须第一个执行。
    (2)pageContext为JSP页面内置对象(页面上下文)

        public void upload()

    (1)上传文件数据。对于上传操作,第一步执行initialize方法,第二步就要执行这个方法。

        public int save(String destPathName) 

    (1)将全部上传文件保存到指定目录下,并返回保存的文件个数。
     

        public int save(String destPathName,int option) 
    (1)将全部上传文件保存到指定目录下,并返回保存的文件个数。
     

       option:
     (1) SAVE_PHYSICAL指示组件将文件保存到以操作系统根目录为文件根目录的目录下
     (2) AVE_VIRTUAL指示组件将文件保存到以Web应用程序根目录为文件根目录的目录下
     (3) SAVE_AUTO则表示由组件自动选择
     

       public Files getFiles() 
     (1)  取全部上传文件,以Files对象形式返回,可以利用Files类的操作方法来获得上传文件的数目等信息

        public Request getRequest() 
    (1) 取得Request对象,以便由此对象获得上传表单参数之值。
     

        public void setAllowedFilesList(String allowedFilesList) 
    (1)设定允许上传带有指定扩展名的文件,当上传过程中有文件名不允许时,组件将抛出异常


        public void setDeniedFilesList(String deniedFilesList) 
    (1)用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限制,则上传时组件将抛出异常。


        public void setMaxFileSize(long maxFileSize) 
    (1) 设定每个文件允许上传的最大长度。


        public void setTotalMaxFileSize(long totalMaxFileSize) 
    (1)设定允许上传的文件的总长度,用于限制一次性上传的数据量大小。

     2.3下载文件常用的方法
       

        public void setContentDisposition(String contentDisposition) 
    (1) 将数据追加到MIME文件头的CONTENT-DISPOSITION域。jspSmartUpload组件会在返回下载的信息时自动填写MIME文件头的CONTENT-DISPOSITION域,如果用户需要添加额外信息,请用此方法。


        downloadFile 下载文件
            ① public void downloadFile(String sourceFilePathName) 
            其中,sourceFilePathName为要下载的文件名(带目录的文件全名)


            ② public void downloadFile(String sourceFilePathName,String contentType) 
             其中,sourceFilePathName为要下载的文件名(带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别)。


            ③ public void downloadFile(String sourceFilePathName,String contentType,String destFileName) 
             其中,sourceFilePathName为要下载的文件名(带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别),destFileName为下载后默认的另存文件名。
 

  3.Files
    3.1概述
        这个类表示所有上传文件的集合,通过它可以得到上传文件的数目、大小等信息。

    3.2常用方法
        public int getCount() 
     取得上传文件的数目。


        public File getFile(int index)。

       其中,index为指定位移,其值在0到getCount()-1之间。取得指定位移处的文件对象File(这是  com.jspsmart.upload.File,不是java.io.File,注意区分)。


        public long getSize() 
     取得上传文件的总长度,可用于限制一次性上传的数据量大小。


        public Collection getCollection() 
    将所有上传文件对象以Collection的形式返回,以便其它应用程序引用,浏览上传文件信息。


        public Enumeration getEnumeration() 
    将所有上传文件对象以Enumeration(枚举)的形式返回,以便其它应用程序浏览上传文件信息。

4.File
    4.1概述
        这个类包装了一个上传文件的所有信息。通过它,可以得到上传文件的文件名、文件大小、扩展名、文件数据等信息。

    4.2常用方法
        public void saveAs(java.lang.String destFilePathName) 或public void saveAs(java.lang.String destFilePathName, int optionSaveAs) 
     destFilePathName是另存的文件名
   

    optionSaveAs
        *** SAVEAS_PHYSICAL表明以操作系统的根目录为文件根目录另存文件
        *** SAVEAS_VIRTUAL表明以Web应用程序的根目录为文件根目录另存文件
        *** SAVEAS_AUTO则表示让组件决定,当Web应用程序的根目录存在另存文件的目录时,它会选择SAVEAS_VIRTUAL,否则会选择SAVEAS_PHYSICAL


        public boolean isMissing() 
    这个方法用于判断用户是否选择了文件,也即对应的表单项是否有值。选择了文件时,它返回false。未选文件时,它返回true。


        public String getFieldName() 
     取HTML表单中对应于此上传文件的表单项的名字。


        public String getFileName() 
    取文件名(不含目录信息)


        public String getFilePathName 
     取文件全名(带目录)


        public String getFileExt() 
     取文件扩展名(后缀)


        public int getSize() 
    取文件长度(以字节计)


        public byte getBinaryData(int index)。

其中,index表示位移,其值在0到getSize()-1之间。取文件数据中指定位移处的一个字节,用于检测文件等处理。

5.Request
   5.1 概述
     这个类的功能等同于JSP内置的对象request。只所以提供这个类,是因为对于文件上传表单,通过request对象无法获得表单项的值,必须通过jspSmartUpload组件提供的Request对象来获取。

   5.2 常用方法
        public String getParameter(String name)。其中,name为参数的名字。
     获取指定参数之值。当参数不存在时,返回值为null。

        public String[] getParameterValues(String name)。其中,name为参数的名字。
     当一个参数可以有多个值时,用此方法来取其值。它返回的是一个字符串数组。当参数不存在时,返回值为null。


        public Enumeration getParameterNames() 
     取得Request对象中所有参数的名字,用于遍历所有参数。它返回的是一个枚举型的对象

6.注意事项
    (1)表单请求方式必须为POST
    (2)设置enctype="multipart/form-data",专用于文件传输
    (3)文件标签需设置name属性
 
————————————————
版权声明:本文为CSDN博主「阿菜酱」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_65208075/article/details/124079363

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值