首页 > 编程 > Java > 正文

javaweb文件打包批量下载代码

2019-11-26 14:08:00
字体:
来源:转载
供稿:网友

本文实例为大家分享了javaweb文件打包批量下载,供大家参考,具体内容如下

// 批量下载未批改作业 @RequestMapping(value = "/downloadAllHomework", method = RequestMethod.GET) public void downloadAllHomework(HttpSession httpSession, HttpServletRequest request, HttpServletResponse response, String assignmentid, int classCode) throws Exception {  Site site = (Site) httpSession.getAttribute("site");  String siteid = site.getId();  // 根据作业ID获取作业详细信息  AssignmentDetail assignmentDetail = assignmentServiceWS.getAssignmentDetail(assignmentid);  generateParameters(assignmentDetail);  // 信息不完整,后面需要填充。  List<AssignmentSubmit> assignmentSubmitList = assignmentServiceWS.getSubmitedAssignmentStudent(assignmentid);  // 获取所有的submitid  List<String> submitids = new ArrayList<String>();  for (int i = 0; i < assignmentSubmitList.size(); i++) {   String submitid = assignmentSubmitList.get(i).getId();   if (submitid == null || submitid == "")    continue;   submitids.add(submitid);  }  // 获取提交详情  List<AssignmentSubmit> assignmentSubmits = new ArrayList<AssignmentSubmit>();  for (String a : submitids) {   AssignmentSubmit as = assignmentServiceWS.getSubmitAssignment(a);   assignmentSubmits.add(as);  }  // 给每个已提交作业的学生配一个map,userName-->AssignmentSubmit  Map<String, AssignmentSubmit> studentSubmitMap = new HashMap<String, AssignmentSubmit>();  for (AssignmentSubmit assignmentSubmit : assignmentSubmits) {   String studentID = assignmentSubmit.getUserName();   studentSubmitMap.put(studentID, assignmentSubmit);  }  // 根据班级号获取该班所有学生的学号,再根据学号获取详情列表  List<AssignmentSubmit> assignmentStudentList = new ArrayList<AssignmentSubmit>();  List<MemberVO> studentList = memberServiceWS.getStudents(siteid, classCode);  for (MemberVO student : studentList) {   String userName = student.getId();   String realName = student.getName();   AssignmentSubmit assignmentSubmit = new AssignmentSubmit();   if (studentSubmitMap.get(userName) != null) {    assignmentSubmit = studentSubmitMap.get(userName);   }   assignmentSubmit.setRealName(realName);   assignmentSubmit.setUserName(userName);   generateA(assignmentSubmit);   assignmentStudentList.add(assignmentSubmit);  }  List<AssignmentSubmit> submitedList = new ArrayList<AssignmentSubmit>();  for (AssignmentSubmit as : assignmentStudentList) {   if (as.getGradePoint() == null && as.getAssignmentID() != null)    submitedList.add(as);  }  List<File> files = new ArrayList<File>();  File file = new File("d:/css.rar");  if (!file.exists()) {   file.createNewFile();  }  response.reset();  // response.getWriter()  // 创建文件输出流  FileOutputStream fous = new FileOutputStream(file);  // 打包的方法我们会用到ZipOutputStream这样一个输出流, 所以这里我们把输出流转换一下  ZipOutputStream zipOut = new ZipOutputStream(fous);  for (AssignmentSubmit a : submitedList) {   for (AttachIDs aa : a.getAttachIDs()) {    try {     String fileId = aa.getId();     String cloudFileUrl = "http://xxx.xxx.xxx.xxx:8066/ImageService/DownloadFile/";     String fileUrl = announceService.getAttachmentByFileid(fileId).getUrlUpload();     fileUrl = fileUrl.substring(fileUrl.lastIndexOf("/") + 1);     fileUrl = cloudFileUrl + fileUrl;     String fileName = announceService.getAttachmentByFileid(fileId).getName(); // 获取远程文件的文件名。     // response.addHeader("Content-Disposition", "attachment;filename=" +     // new String(fileName.getBytes("gbk"), "iso-8859-1"));     // iso-8859-1     ZipEntry entry = new ZipEntry(new String(fileName.getBytes("gbk"), "iso-8859-1"));     zipOut.putNextEntry(entry);     URL urlfile = null;     HttpURLConnection httpUrl = null;     urlfile = new URL(fileUrl);     httpUrl = (HttpURLConnection) urlfile.openConnection();     httpUrl.connect();     InputStream downloadFile = httpUrl.getInputStream();     int len = 0;     byte[] buf = new byte[1024];     while ((len = downloadFile.read(buf, 0, 1024)) != -1) {      zipOut.write(buf, 0, len);     }    } catch (JSONException e) {     e.printStackTrace();    } catch (UnsupportedEncodingException e) {     e.printStackTrace();    }   }  }  zipOut.close();  fous.close();  downloadZip(file, response); } // 把接受的全部文件打成压缩包 public static HttpServletResponse downloadZip(File file, HttpServletResponse response) {  try {   // 以流的形式下载文件。   InputStream fis = new BufferedInputStream(new FileInputStream(file.getPath()));   byte[] buffer = new byte[fis.available()];   fis.read(buffer);   fis.close();   // 清空response   response.reset();   OutputStream toClient = new BufferedOutputStream(response.getOutputStream());   response.setContentType("application/octet-stream");   // 如果输出的是中文名的文件,在此处就要用URLEncoder.encode方法进行处理   response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8"));   toClient.write(buffer);   toClient.flush();   toClient.close();  } catch (IOException ex) {   ex.printStackTrace();  } finally {   try {    File f = new File(file.getPath());    f.delete();   } catch (Exception e) {    e.printStackTrace();   }  }  return response; }

博客地址!http://oldriver.top/ 老司机技术手册

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表