java实现文件上传和下载的后台代码

try {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
           
            // 得到所有的表单域,它们目前都被当作FileItem
            List<FileItem> fileItems = upload.parseRequest(request);
            Iterator<FileItem> iter = fileItems.iterator();
           
            // 依次处理每个表单域
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
               
                if(item.isFormField()){
                    // 如果item是正常的表单域
                    String name = item.getFieldName();
                    String value = item.getString();
                    System.out.print("表单域名为:"+name+"表单域值为:"+value);
                }
                else{
                    // 如果item是文件上传表单域
                   
                    // 获得文件名及路径
                    String fileName = item.getName();
                    if (fileName != null) {
                        File fullFile = new File(item.getName());                           
                                                   
                        // 如果文件存在则上传
                        if(fullFile.exists()){
                            File fileOnServer = new File("D:/file",
                                    fullFile.getName());
                            item.write(fileOnServer);
                           
                            System.out.println("文件"+fileOnServer.getName()+"上传成功");
                        }
                    }
                }
            }               
        } catch (Exception e) {
            e.printStackTrace();
        }

//上传代码

 

 response.setContentType("text/html");
//  PrintWriter out = response.getWriter();
  
  List<User> users=new ArrayList();
  users=(List<User>) session.getAttribute("us");
  request.setCharacterEncoding("utf-8");
    
   
     
      // 禁止数据缓存。
      response.setHeader("Pragma", "no-cache");
      response.setHeader("Cache-Control", "no-cache");
      response.setDateHeader("Expires", 0);
    
             //        创建Excel文档
      HSSFWorkbook wb = new HSSFWorkbook() ;
          //       sheet 对应一个工作页
      HSSFSheet sheet = wb.createSheet("test_table表中的数据") ;//创建第一个工作页的表格的名字
//      sheet.addMergedRegion(new Region(0,(short)0,0,(short) 4)); 
      HSSFRow firstrow = sheet.createRow(0); //下标为0的行开始
      String[] names = new String[3];
      names[0] = "ID";
      names[1] = "姓名";
      names[2] = "密码";
      for(int i=0;i<3;i++){
       HSSFCell     hssfcell    = firstrow.createCell((short)i);
       hssfcell.setCellValue(names[i]);
      }
     
//      User user=new User();
//      user=(User) session.getAttribute("user");
//      String[] u = new String[3];
//   int abc=user.getId()+1;
//      u[0] = Integer.toString(abc);
//      u[1] = user.getName();
//      u[2] = user.getPassWord();
//      HSSFRow hssfrow = sheet.createRow(1);
//      for(int i=0;i<3;i++){
//       HSSFCell     hssfcell    = hssfrow.createCell((short)i);
//       hssfcell.setCellValue(u[i]);
//      }
//      System.out.print(users.size());
        
         for(int j=1;j<users.size()+1;j++){
          User u=new User();
          u=users.get(j-1);
            HSSFRow hssfrow = sheet.createRow(j);
            String[] user = new String[3];
            int abc=u.getId();
               user[0] = Integer.toString(abc);
               user[1] =u.getName();
               user[2] = u.getPassWord();
            for(int i=0;i<3;i++){
                HSSFCell     hssfcell    = hssfrow.createCell((short)i);
                hssfcell.setCellValue(user[i]);
            }
         }
//        
        
        
     
   
//     
//      for(int j= 0 ;j<3; j++){
//      firstcell[j] = firstrow.createCell(j);
//      firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
//      }
//      Iterator<User> it=users.iterator();
   /*  while(i<4){
    
        HSSFRow row = sheet.createRow(i) ; // 下标为1的行开始
           for(int j=0;j<3;j++)
           {
           // 在一行内循环
           HSSFCell cell = row.createCell(j) ;
           // 设置表格的编码集,使支持中文
           //
           // 先判断数据库中的数据类型
           // 将结果集里的值放入电子表格中
          
              cell.setCellValue(new HSSFRichTextString("ad")) ;
          
        
           }
           i++ ;
     }*/
     
      // 创建文件输出流,准备输出电子表格
      OutputStream os = new FileOutputStream("E:\\test.xls") ;
      wb.write(os) ;
    
      File file=new File("E:\\test.xls");
         //设置response的编码方式
         response.setContentType("application/x-msdownload");
         //写明要下载的文件的大小
         response.setContentLength((int)file.length());
         //设置附加文件名
        // response.setHeader("Content-Disposition","attachment;filename="+filename);
        
         //解决中文乱码
     response.setHeader("Content-Disposition","attachment;filename=test.xls");       
         //读出文件到i/o流
         FileInputStream fis=new FileInputStream(file);
         BufferedInputStream buff=new BufferedInputStream(fis);
         byte [] b=new byte[1024];//相当于我们的缓存
         long k=0;//该值用于计算当前实际下载了多少字节
         //从response对象中得到输出流,准备下载
         OutputStream myout=response.getOutputStream();
         //开始循环下载
         while(k<file.length()){
             int j=buff.read(b,0,1024);
             k+=j;
             //将b中的数据写到客户端的内存
             myout.write(b,0,j);
         }
         myout.flush();
    myout.close();
    //excel文件导入数据和下载代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值