The Situation:
I am attempting to create an application that recieves information from cfhttp
request containing a zip file as a java ByteArrayOutputStream object. This zip
file is then written to the hard disk and unzipped. The problem is that the zip
files are unreadable by the java.util.ZipFile library. Am I not writing the
files correctly? I have tested these files with winZip and everything works
fine there. Also I have used zip files created by winZip and application is
able to unzip the files without any problem.
The exact error I recieve when using one of these files is:
Object Instantiation Exception.
An exception occurred when instantiating a java object. The cause of this
exception was that: .
The error occurred in D:\ACM\CFC\mailbox.cfc: line 174
Called from D:\ACM\CONNTEST\index.cfm: line 8
Called from D:\ACM\CFC\mailbox.cfc: line 174
Called from D:\ACM\CONNTEST\index.cfm: line 8
172 : <cfscript>
173 : //open zip file
174 : zipFile.init(arguments.inFileName);
175 :
176 : //get file entries
Stack Trace:
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedConstructorAccessor79.newInstance(Unknown
Source)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at coldfusion.runtime.java.JavaProxy.CreateObject(JavaProxy.java:128)
at coldfusion.runtime.java.JavaProxy.invoke(JavaProxy.java:56)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:1634)
at
cfmailbox2ecfc1528230210$funcUNZIP.runFunction(D:\ACM\CFC\mailbox.cfc:174)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:344)
at
coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:254)
at
coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:56)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:207)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:169)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:194)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:146)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:1634)
at cfindex2ecfm1170876534.runPage(D:\ACM\CONNTEST\index.cfm:8)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:152)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:349)
at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
at
coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:225)
at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:69)
at
coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
at
coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:115)
at coldfusion.CfmServlet.service(CfmServlet.java:107)
at
coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:78)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:257)
at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:541)
at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:204)
at
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:426)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
Caused by: java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:111)
at java.util.zip.ZipFile.<init>(ZipFile.java:71)
The Code:
Writing the zip file
<code>
<cfhttp url ="#prop.Url#"
method ="POST"
username ="#prop.user#"
password ="#prop.pass#"
proxyserver ="#prop.proxyServer#"
proxyuser ="#prop.proxyUser#"
proxypassword ="#prop.proxyPass#">
<cfhttpparam type="url" name="function" value="downloadfiles">
<cfhttpparam type="url" name="filelist" value="#arguments.fileList#">
<cfhttpparam type="cookie" name="SESSIONID" value="#prop.sessionID#">
<cfhttpparam type="cookie" name="JSESSIONID" value="#prop.sessionID#">
</cfhttp>
<cffile action="write"
nameconflict="overwrite" output="#cfhttp.fileContent.toString()#"
file="d:\acm\#listGetAt(cfhttp.Responseheader['Content-disposition'],2,'=')#">
</code>
opening the zip file
<code>
<cfscript>
//open zip file
zipFile.init(arguments.inFileName);
//get file entries
entries = zipFile.entries();
while(entries.hasMoreElements()){
//get entry
entry = entries.nextElement();
if(NOT entry.isDirectory()){
name = entry.getName();
//does file name contain a path
lenPath = len(name) - len(getFileFromPath(name));
if (lenPath)
path = arguments.outDir & left(name, lenPath);
else
path = arguments.outDir;
//create path if it does not exsist
if(NOT directoryExists(path)){
fil = createObject("java", "java.io.File");
fil.init(path);
fil.mkdirs();
}
//open file
outStream = createObject('java', 'java.io.FileOutputStream');
outStream.init(arguments.outDir & name);
bufOutStream = createObject( "java",
"java.io.BufferedOutputStream");
bufOutStream.init(outStream);
//copy the input stream
inStream = zipFile.getInputStream(entry);
data = inStream.read(buffer);
while(data GTE 0) {
bufOutStream.write(buffer, 0, data);
data = inStream.read(buffer);
}
OutStream.close();
InStream.close();
}
}//end while loop
zipFile.close();
</cfscript>
</code>
Thanks in advance for your help,
Wes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to
date
Get the Free Trial
http://ad.doubleclick.net/clk;207172674;29440083;f
Archive:
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:313598
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe:
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4