简单文件上传 下载 线程处理

来源:互联网 发布:js 倒计时 编辑:程序博客网 时间:2024/06/03 22:27

1 文件上传

页面设置type="file"  <input type="file" id="fileName" name="fileName">  来控制上传文件。

2文件处理

controller 通过CommonsMultipartFile类来接收文件,文件在网络中以流的形式存在。

      以csv文件为列,通过CommonsMultipartFile.getInputStream() 来获取 InputStream,

         //把输入流转换成字节数组  

           byte[] byteArray = IOUtils.toByteArray(InputStream);

           encodingIs = new ByteArrayInputStream(byteArray);

           //获取输入流编码

            String encoding = FileUtil.getCharset(encodingIs);
            biUpload = new ByteArrayInputStream(byteArray);

          //通过LineIterator 来一行一行的读文件
            LineIterator it = IOUtils.lineIterator(biUpload, encoding);

             while (it.hasNext()) {

                      //获取一行的string 

String ss=it.nextLine();

                      //转成String数组

      String[] values = str.split(",");

     //这里可以进行数据的处理了,也可以进行异步处理,发起线程,需要多线程处理 可以使用线程池

                     ansy(values );

              }


           private void ansy(values ){

new Thread(new Runnable() {
            @Override
                         public void run() {

                         //数据处理

                   }

                 },"线程名称").start();
             }

3文件下载

filename = URLEncoder.encode(filename, "UTF-8"); 

  //设置客户端的响应内容

 response.setContentType("application/vnd.ms-excel;charset=UTF-8");

    //设置HTTP消息头
 response.setHeader("Content-Disposition", "attachment; filename=" + filename);

 InputStream is = null;
  OutputStream out = null;

  //找到文件 获取输入流 copy给输出流
 IOUtils.copy(input, out);
 response.setStatus(HttpServletResponse.SC_OK);

 response.flushBuffer();

0 0
原创粉丝点击