使用压缩包上传时,压缩包临时解压,用于读取文件并对文件逐一上传操作时候,会使用Java自带的zip
// 开始文件上传
String filename = "文件名称";
File file = null;
//创建临时文件时
file = File.createTempFile(filename);
//使用transferTo()方法将上传文件写到服务器上指定的文件;
multipartFile.transferTo(file);
// deleteOnExit()方法时,只是相当于对deleteOnExit()作一个声明,当程序运行结束,JVM终止时才真正调用deleteOnExit()方法实现删除操作。即该方法是将删除的命令缓存了一下,到服务停止的时候再进行操作!
file.deleteOnExit();
ZipFile zf = new ZipFile(file,Charset.forName("GBK")); // 一定要加Charset.forName("GBK")
Enumeration<?> zipEnum = zf.entries();
ZipEntry ze;
while (zipEnum.hasMoreElements()) {
ze = (ZipEntry) zipEnum.nextElement(); // 如果不加Charset.forName("GBK") 则会在这一步抛出标题所说的异常!!!!
if (!ze.isDirectory()) {
long zeSize = ze.getSize();
if (zeSize > 0) {
InputStream obsInputStreams = zf.getInputStream(ze);
// 开始文件上传 业务处理
*****
}
}
}