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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值