zoukankan      html  css  js  c++  java
  • SmartUpload文件上传组件的使用教程

     

    在项目中使用SmartUpload组件可以进行文件的上传和下载操作

    使用步骤

    1.导入jar,进行build path操作

    2.编写文件上传页面,代码如下

    <form action="smartupload.jsp" method="post" enctype="multipart/form-data">

       请选择要上传的文件:<input type="file" name="pic">

       <input type="submit"  value="上传">

      </form>

    3.建立upload文件夹,文件夹在web跟目录下:

    4.实例化SmartUpload对象:

    5.初始化上传操作;

    6.准备上传

    7.保存文件

    代码如下:

    <%

    //1.实例化SmartUpload对象

    SmartUpload smart=new SmartUpload();

    //2.初始化上传操作

    smart.initialize(pageContext);

    //3.上传准备

    smart.upload();

    //保存文件

    smart.save("upload");

    %>

    单是现在出现一个问题,表单使用enctype="multipart/form-data"进行了二进制的封装,无法使用request.getParameter()方法获取值了,而是二进制的byte流了.

    上传页面代码如下:

     <form action="smartupload.jsp" method="post" enctype="multipart/form-data">

       姓名:<input type="text" name="uname"><br/>

       

    照片:<input type="file" name="pic"><br/>

       <input type="submit"  value="上传">

       </form>

    处理请求页面的代码如下:

    <%

    //1.实例化SmartUpload对象

    SmartUpload smart=new SmartUpload();

    //2.初始化上传操作

    smart.initialize(pageContext);

    //3.上传准备

    smart.upload();

    //保存文件

    smart.save("upload");

    request.setCharacterEncoding("UTF-8");

    %>

    <%="姓名是"+request.getParameter("uname") %>

    使用传统的request.getParameter("uname") 已经无法获取到用户输入的信息类.

    这个时候如果想要获取表单中的请求值,只有使用SmartUpload中的方法getRequest.getParameter()方法进行获取

    处理页面代码如下:

    <%

    //1.实例化SmartUpload对象

    SmartUpload smart=new SmartUpload();

    //2.初始化上传操作

    smart.initialize(pageContext);

    //3.上传准备

    smart.upload();

    //保存文件

    smart.save("upload");

    String name=smart.getRequest().getParameter("uname");

    name=new String(name.getBytes(),"UTF-8");

    %>

    <%="姓名是"+name %>

    但是现在发现另一个问题,我们多次上传一个文件,我们的文件夹里面始终就保存了一个,文件本身的覆盖导致的,

    解决方法,为我们上传的文件自动命名

    1.IP+时间戳+三位随机数

    建立一个类,专门完成文件自动命名

    处理文件保存页面的代码如下:

    <%

    //1.实例化SmartUpload对象

    SmartUpload smart=new SmartUpload();

    //2.初始化上传操作

    smart.initialize(pageContext);

    //3.上传准备

    smart.upload();

    //获取客户端的 IP地址

    String ip=request.getRemoteAddr();

    /*IpTimeStamp是自己定义的一个类,

    中有一个获得(IP+时间戳+三位随机数)字符串的方法*/

    IpTimeStamp its=new IpTimeStamp(ip);

    /*获取文件的扩展名.smart.getFiles()是获取我们上传的多

    个文件,getFile(0).这里面的0是下标getFileExt()是获取文件的扩展名*/

    String ext =smart.getFiles().getFile(0).getFileExt();

    //拼接文件名称

    String fileName=its.getIpTimeRand()+"."+ext;

    //java.io.File.separator是系统分隔符,win7"" 这是将文件保存为什么名字

    smart.getFiles().getFile(0).saveAs(this.getServletContext().getRealPath("/")+"upload"+java.io.File.separator+fileName);

    String name=smart.getRequest().getParameter("uname");

    name=new String(name.getBytes(),"UTF-8");

    //保存文件

    smart.save("upload");

    %>

    <%="姓名是"+name %>

    如果想要限制用户上传文件的扩展名

    假如我们一次性上传多个文件,可以使用getFiles()来获取我们上传的文件getFiles()方法返回的是一个数组

    smart.getFiles().getFile(0).getFileName()//获取文件名

    //matchs()String的方法,用来匹配正则表达式

    通过smart.getFiles().getFile(0).getFileName().matches(“^\w+.(jpg|gif)$”) 来对上传的文件进行验证,后缀匹配,form表单才能提交.

    文件的批量上传:

    需要用到smart的方法,getCount();来获取上传来多少个文件

    例如:smart.getFiles().getCount(),来获取批量上传的文件数量.再使用for循环来对文件进行重命名和保存的操作

  • 相关阅读:
    UGUI ScrollView 自适应高度
    OnApplicationFocus 与 OnApplicationPause
    unity读取二进制配置文件
    sprite实现影子
    protobuf 标签DataFormat =DataFormat.FixedSize解决连续int字段无法解析
    unity显示网络延迟ping
    ios piv6遭拒绝
    读取FTP上的某个文本文档内容到本地
    EF提交插入数据catch捕获具体异常方法
    ASP.NET后台调用API 方法 POST方式
  • 原文地址:https://www.cnblogs.com/zqr99/p/7542927.html
Copyright © 2011-2022 走看看