ZipInputStream 读取 file.getInputStream()失败,该如何解决

需求描述:
实现一个接口,接收zip文件的时候读取有压缩包里边的excel或csv表格里边的数据

有如下接口:

@RestController
@RequestMapping("/")
public class Controller {
    @GetMapping("index")
    public void test(MultipartFile file) {
        try {
            InputStream inputStream = file.getInputStream();
            System.out.println(inputStream.available());
            ZipEntry zipEntry;
            ZipInputStream zipInputStream = new ZipInputStream(inputStream);

            System.out.println(zipInputStream.available());
            while ((zipEntry = zipInputStream.getNextEntry()) != null) {
                String fileName = zipEntry.getName();
                System.out.println(fileName);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

问题描述:
inputStream 可以接收数据的内容,但是无法将数据流写到ZipInputStream,既【new ZipInputStream(inputStream);】无效,请问哪位有解决过类似的问题

你可以试试,未测试!


public void test(File file) {
        try {
           // 开始解压
          ZipFile zipFile = new ZipFile(file)
            Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zipFile.entries();
            while (entries.hasMoreElements()) {
               ZipEntry entry = entries.nextElement();
                String entryName = entry.getName();
                System.out.println(fileName);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

不能直接从MultipartFile创建ZipInputStream, 可以使用BufferedInputStream包一下,或者先保存文件到临时目录,再通过文件流ZipFile来生成