繁体   English   中英

在 Spring 引导 Java 从响应中提取 zip 文件而不进行物理保存

[英]In Spring Boot Java Extracting the zip file from response without physically saving it

在 Spring Boot 中作为响应来的 zip 文件在保存前结构已损坏,但我物理保存时没有问题。 我需要把zip文件里面的文件拿出来,处理数据库里的信息,但是我不能物理下载这个文件,因为我用的是GCP。 如何提取此 zip 文件中的文件作为响应? 我该如何解决这个问题,请帮忙。

这是在保存之前在 response.body() 中的样子(部分):

"PK C`iUq �=n 緰) bu_customerfile_22110703_B001_10292121141�]i��������RI%U�v����CJ� ��×��My��y/ίϹ������ =>����}����8����׿}~}~yz... $��F��/��8˳��L��_��QaZ-q��F��d4γE��[��(f��8��D��0��2_��P"��I��A��D� ��4��������D��(��T��$.��<��,��i]Fe��iM��q< ʨ��Olmi��(&����?y��y4�� <��Q��X����p�@��6f-.F���� ��8����"I㢨ˤU]��E������ %@������(W��8*0c� p:L��:�� }��G����e<����a��"

这是请求调用:

OkHttpClient client1 = new OkHttpClient().newBuilder()
        .build();
MediaType mediaType1 = MediaType.parse("text/plain");
RequestBody body1 = RequestBody.create(mediaType1, "");
Request request1 = new Request.Builder()
        .url(vers)
        .method("POST", body1)
        .addHeader("Cookie", "ASP.NET_SessionId=44dxexdxass5mtf00udjfwns")
        .build();
Response response1 = client1.newCall(request1).execute();

String data = response1.body().string();

这会是编码类型的问题吗? String 是 UTF-16 类型(我认为)。 尝试更像是字节数组/向量的不同数据类型。

尝试像这里提到的那样: Having trouble reading http response into input stream

更新:获取字节为 stream 的响应并将其送入 ZipInputStream object,如此处所示https://zetcode.com/java/zipinputstream/#:~:text=ZipInputStream%20is%20a%20Java%20class,both% 20 个压缩的 %20 和 %20 个未压缩的 %20 个条目。

然后遍历包含的文件以找到您需要的文件。 然后检索与压缩文件关联的 stream。 然后你可以从那里阅读。 (我意识到这有点麻烦,但自从我使用 Zip 文件和 Java 以来已经有一段时间了。)这应该会让您走上正确的道路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM