若依下载zip包
思路
看了若依的代码生成功能里有zip下载,
所有东西转化为字节数组,图片和文字要单独处理
1、控制层
@Log(title = "导出", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, @RequestBody PsyCheck psyCheck) throws IOException {
List
public byte[] downloadExportPsyCheckZip(Listlist) throws IOException{ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(outputStream); //图片处理 for (ExportPsyCheck exportPsyCheck :list){ //判断为空跳过 if (exportPsyCheck.getSign()==null){ continue; } //这里imageName不能出现重复,否则会报错 String imageName=exportPsyCheck.getNickName()+exportPsyCheck.getReadyDate()+exportPsyCheck.getReadyTime()+"uuid"+ UUID.fastUUID()+"."+ exportPsyCheck.getSign().split(";")[0].split("/")[1]; zip.putNextEntry(new ZipEntry(imageName)); base64Decoder decoder = new base64Decoder(); // base64解码 byte[] bytes = decoder.decodeBuffer(exportPsyCheck.getSign().split(",")[1]); for (int i = 0; i < bytes.length; ++i) { if (bytes[i] < 0) { // 调整异常数据 bytes[i] += 256; } } IOUtils.write(bytes, zip); zip.flush(); zip.closeEntry(); } //表格处理 ExcelUtil util = new ExcelUtil (ExportPsyCheck.class); byte[] excleByte = util.downExcel(list, "student.xlsx"); zip.putNextEntry(new ZipEntry("学生信息.xlsx")); IOUtils.write(excleByte, zip); zip.flush(); zip.closeEntry(); IOUtils.closeQuietly(zip); return outputStream.toByteArray(); }
public static void genCode(HttpServletResponse response, byte[] data,String filename) throws IOException
{
response.reset();
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment; filename=""+filename+".zip"");
response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(data, response.getOutputStream());
}
问题
想把图片插入表格中的下载的;没有实现,只有把图片文件和表格弄成zip下载下来一起下载下来的
想知道如何往表格中插入图片。如果有知道的欢迎评论区留言或者加QQ



