Push all the zip opening logic into ZipHelper
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1735064 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0fab07ccfc
commit
700fe05e34
@ -24,7 +24,6 @@ import java.io.OutputStream;
|
|||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
import java.util.zip.ZipInputStream;
|
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||||
@ -42,7 +41,6 @@ import org.apache.poi.openxml4j.opc.internal.marshallers.ZipPartMarshaller;
|
|||||||
import org.apache.poi.openxml4j.util.ZipEntrySource;
|
import org.apache.poi.openxml4j.util.ZipEntrySource;
|
||||||
import org.apache.poi.openxml4j.util.ZipFileZipEntrySource;
|
import org.apache.poi.openxml4j.util.ZipFileZipEntrySource;
|
||||||
import org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource;
|
import org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource;
|
||||||
import org.apache.poi.openxml4j.util.ZipSecureFile;
|
|
||||||
import org.apache.poi.openxml4j.util.ZipSecureFile.ThresholdInputStream;
|
import org.apache.poi.openxml4j.util.ZipSecureFile.ThresholdInputStream;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
@ -89,9 +87,8 @@ public final class ZipPackage extends Package {
|
|||||||
*/
|
*/
|
||||||
ZipPackage(InputStream in, PackageAccess access) throws IOException {
|
ZipPackage(InputStream in, PackageAccess access) throws IOException {
|
||||||
super(access);
|
super(access);
|
||||||
InputStream zis = new ZipInputStream(in);
|
ThresholdInputStream zis = ZipHelper.openZipStream(in);
|
||||||
ThresholdInputStream tis = ZipSecureFile.addThreshold(zis);
|
this.zipArchive = new ZipInputStreamZipEntrySource(zis);
|
||||||
this.zipArchive = new ZipInputStreamZipEntrySource(tis);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,17 +19,20 @@ package org.apache.poi.openxml4j.opc.internal;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
|
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
|
||||||
import org.apache.poi.openxml4j.opc.PackageRelationship;
|
import org.apache.poi.openxml4j.opc.PackageRelationship;
|
||||||
import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
|
import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
|
||||||
import org.apache.poi.openxml4j.opc.ZipPackage;
|
import org.apache.poi.openxml4j.opc.ZipPackage;
|
||||||
import org.apache.poi.openxml4j.util.ZipSecureFile;
|
import org.apache.poi.openxml4j.util.ZipSecureFile;
|
||||||
|
import org.apache.poi.openxml4j.util.ZipSecureFile.ThresholdInputStream;
|
||||||
|
|
||||||
public final class ZipHelper {
|
public final class ZipHelper {
|
||||||
/**
|
/**
|
||||||
@ -143,7 +146,21 @@ public final class ZipHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the specified file as a zip, or returns null if no such file exists
|
* Opens the specified stream as a secure zip
|
||||||
|
*
|
||||||
|
* @param stream
|
||||||
|
* The stream to open.
|
||||||
|
* @return The zip stream freshly open.
|
||||||
|
*/
|
||||||
|
public static ThresholdInputStream openZipStream(InputStream stream) throws IOException {
|
||||||
|
InputStream zis = new ZipInputStream(stream);
|
||||||
|
ThresholdInputStream tis = ZipSecureFile.addThreshold(zis);
|
||||||
|
return tis;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens the specified file as a secure zip, or returns null if no
|
||||||
|
* such file exists
|
||||||
*
|
*
|
||||||
* @param file
|
* @param file
|
||||||
* The file to open.
|
* The file to open.
|
||||||
@ -158,7 +175,7 @@ public final class ZipHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve and open a zip file with the specified path.
|
* Retrieve and open as a secure zip file with the specified path.
|
||||||
*
|
*
|
||||||
* @param path
|
* @param path
|
||||||
* The file path.
|
* The file path.
|
||||||
@ -166,11 +183,7 @@ public final class ZipHelper {
|
|||||||
*/
|
*/
|
||||||
public static ZipFile openZipFile(String path) throws IOException {
|
public static ZipFile openZipFile(String path) throws IOException {
|
||||||
File f = new File(path);
|
File f = new File(path);
|
||||||
|
|
||||||
if (!f.exists()) {
|
return openZipFile(f);
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new ZipSecureFile(f);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user