Flask接口签名sign原理与实例代码浅析
205
2023-07-12
javaweb文件打包批量下载代码
本文实例为大家分享了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
// 获取所有的submitid
List
for (int i = 0; i < assignmentSubmitList.size(); i++) {
String submitid = assignmentSubmitList.get(i).getId();
if (submitid == null || submitid == "")
continue;
submitids.add(submitid);
}
// 获取提交详情
List
for (String a : submitids) {
AssignmentSubmit as = assignmentServiceWS.getSubmitAssignment(a);
assignmentSubmits.add(as);
}
// 给每个已提交作业的学生配一个map,userName-->AssignmentSubmit
Map for (AssignmentSubmit assignmentSubmit : assignmentSubmits) { String studentID = assignmentSubmit.getUserName(); studentSubmitMap.put(studentID, assignmentSubmit); } // 根据班级号获取该班所有学生的学号,再根据学号获取详情列表 List List 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 for (AssignmentSubmit as : assignmentStudentList) { if (as.getGradePoint() == null && as.getAssignmentID() != null) submitedList.add(as); } List 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=" + http:// // 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/ 老司机技术手册
for (AssignmentSubmit assignmentSubmit : assignmentSubmits) {
String studentID = assignmentSubmit.getUserName();
studentSubmitMap.put(studentID, assignmentSubmit);
}
// 根据班级号获取该班所有学生的学号,再根据学号获取详情列表
List
List
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
for (AssignmentSubmit as : assignmentStudentList) {
if (as.getGradePoint() == null && as.getAssignmentID() != null)
submitedList.add(as);
}
List
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=" +
http:// // 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/ 老司机技术手册
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~