zoukankan      html  css  js  c++  java
  • 文件上传下载

    文件上传必要前提(有如下三点)

    a: 表单的form标签 method 必须是post
    b:enctype 必须是multipart/form-data
    c :必须有input标签而且 type="file"

    注意点:

    ***mime类型其实就是文件类型

    ***enctype其实就是请求消息头里面的Content-type
    ***由于表单中提交数据的方式为multipa..所以getparameter不好使了


    导入两个jar包

          1 >>commons-io-2.2.jar

          2>>commons-fileupload-1.2.2.jar
    其中fileupload jar包中包括三个关键的类
         工厂类 diskFileItemFactry
         生产 ServletFileupload
         操作 FileItem

    ***解决file文件全路径的方法资料里找FAQ

    (fileUtils.getName)

    ****避免文件名一致问题
    filename=UUID.random()+_+原filename

    ****目录打散

        按照日期打散

    ****限制上传文件大小
    核心类.setFileSize...(字节为单位);
    临时文件处理
    delete
    解决上传表单乱码问题
    ServletFileupload.setHeaderEncoding("UTF-8")

    文件下载

    要素:两个头一个流

    //设置一个要下载的文件
    String filename = "销售榜单.csv";

    //设置文件名的编码
    if(request.getHeader("user-agent").toLowerCase().contains("msie")){
    filename = URLEncoder.encode(filename, "UTF-8");//将不安全的文件名改为UTF-8格式
    }else{
    filename = new String(filename.getBytes("UTF-8"),"iso-8859-1");//火狐浏览器
    }
    //告知浏览器要下载文件
    response.setHeader("content-disposition", "attachment;filename="+filename);
    //response.setHeader("content-type", "image/jpeg");
    response.setContentType(this.getServletContext().getMimeType(filename));//根据文件名自动获得文件类型

    response.setCharacterEncoding("UTF-8");//告知服务器使用什么编码
    //创建一个文件输出流
    PrintWriter out = response.getWriter();
    out.write("电视机,20 ");
    out.write("洗衣机,10 ");
    out.write("冰箱,8 ");
    }


    ***需要导入io包
    ***将服务器上指定的文件下载

    String filename = "F:\图片\6.jpg";

    //根据文件名获取 MIME 类型
    String contentType = this.getServletContext().getMimeType(filename);

    String contentDisposition = "attachment;filename=a.jpg";

    // 输入流
    FileInputStream input = new FileInputStream(filename);

    // 设置头
    response.setHeader("Content-Type",contentType);
    response.setHeader("Content-Disposition",contentDisposition);

    // 获取绑定了客户端的流
    ServletOutputStream output = response.getOutputStream();

    // 把输入流中的数据写入到输出流中
    IOUtils.copy(input,output);
    input.close();


  • 相关阅读:
    HttpServletRequest和HttpServletResponse实例
    ioc autofac简单示例
    sql left join 字符串
    sqlserver split函数
    类型同时存在于A.dll和B.dll中的解决办法
    ef使用dbfirst方式连接mysql
    html5 图片上传 预览
    webservice使用EF生成的model序列化问题
    sqlserver2008数据库文件降级为sqlserver2005文件
    [转]webapi部署在IIS7.5报404的解决方案
  • 原文地址:https://www.cnblogs.com/fdbk/p/8569772.html
Copyright © 2011-2022 走看看