我是java的初学者,想要一些关于使用rest api调用将下载文件压缩到MSSQL后端的帮助。下面是代码段,它将ID作为输入参数,获取特定于该ID的记录并将其下载到本地。我现在需要修改的代码压缩文件时,它正在下载。
@GetMapping("/message/save")
@CrossOrigin(origins = "*")
public ResponseEntity<byte[]> download(@RequestParam("id") Long id) throws Exception {
Optional<MessageEntity> messageRecord = messageRepository.findById(id);
MessageEntity messageEntity = messageRecord.get();
ObjectMapper objectMapper = new ObjectMapper();
String xml = objectMapper.writeValueAsString(messageEntity);
byte[] isr = xml.getBytes();
String fileName = "message.zip";
HttpHeaders respHeaders = new HttpHeaders();
respHeaders.setContentLength(isr.length);
respHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
respHeaders.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
return new ResponseEntity<byte[]>(isr, respHeaders, HttpStatus.OK);
}
我希望输出是一个压缩文件。
我不确定我是否理解清楚你的问题。但我假设您只需要从String生成zip即可:
@GetMapping("/message/save")
@CrossOrigin(origins = "*")
public void download(@RequestParam("id") Long id, HttpServletRequest request,
HttpServletResponse response) throws Exception {
MessageEntity messageEntity = messageRepository.findById(id).orElseThrow(() -> new Exception("Not found!"));
String xml = new ObjectMapper().writeValueAsString(messageEntity);
String fileName = "message.zip";
String xml_name = "message.xml";
byte[] data = xml.getBytes();
byte[] bytes;
try (ByteOutputStream fout = new ByteOutputStream();
ZipOutputStream zout = new ZipOutputStream(fout)) {
zout.setLevel(1);
ZipEntry ze = new ZipEntry(xml_name);
ze.setSize(data.length);
zout.putNextEntry(ze);
zout.write(data);
zout.closeEntry();
bytes = fout.getBytes();
}
response.setContentType("application/zip");
response.setContentLength(bytes.length);
response.setHeader("Content-Disposition",
"attachment; "
+ String.format("filename*=" + StandardCharsets.UTF_8.name() + "''%s", fileName));
ServletOutputStream outputStream = response.getOutputStream();
FileCopyUtils.copy(bytes, outputStream);
outputStream.close();
}
问题内容: 如何更改压缩文件的以下命令? 该命令可以正常使用正常文件。我需要更改压缩文件的命令。 问题答案: 您需要像这样读取它们的压缩文件: 尝试这个:
常用压缩包—解压—令整理 Linux 后缀为 .war 格式的文件(一般用在部署 Tomcat 项目的时候) 命令:unzip -oq XXXXXX.war -d ROOT 如果没有 ROOT 目录会自动创建 ROOT 目录。 Linux 后缀为 .tar.gz 格式的文件-解压 命令:tar zxvf XXXXXX.tar.gz Linux 后缀为 .bz2 格式的文件-解压 命令:bzip2
问题内容: 我想使用urllib下载文件,并在保存之前对文件进行解压缩。 这就是我现在所拥有的: 最终将写入空文件。我该如何实现自己的追求? 更新的答案: 问题答案: 在写完之后,但要传递给之前,您需要寻找到开始的地方。否则它将被模块从头读取,并显示为空文件。见下文:
问题内容: 如果文件是A ,我可以解压缩文件,如果文件类型是I,则可以解压缩文件。我如何使用python 2.7进行此工作? 问题答案: 试试这个包:
问题内容: 如果我想使用命令下载软件包(及其依赖项),但 保留 所有已下载的压缩文件(例如django- socialregistration.tar.gz)-有没有办法做到这一点? 我尝试了各种命令行选项,但它似乎总是解压缩并 删除 zipfile-或获取zipfile,但 仅 适用于原始程序包,而不适用于依赖项。 问题答案: 不推荐使用。从8.0.0版开始,您应该使用以下命令:
问题内容: 我很难弄清楚如何使用2.4解压缩zip文件。不包含在2.4中。我只能在服务器上使用2.4.4。 有人可以提供一个简单的代码示例吗? 问题答案: 您必须使用和。考虑目录的样本