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

Reply via email to