Update of 
/var/cvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http
In directory 
james.mmbase.org:/tmp/cvs-serv30459/cmsc/utilities/src/java/com/finalist/util/http

Modified Files:
      Tag: b1_5
        BulkUploadUtil.java 
Log Message:
CMSC-1324 - Uploading zipped images are not unzipped: zip-detection fails; Made 
existing methods stronger too.


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http
See also: http://www.mmbase.org/jira/browse/CMSC-1324


Index: BulkUploadUtil.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -b -r1.9 -r1.9.2.1
--- BulkUploadUtil.java 25 Aug 2008 14:54:30 -0000      1.9
+++ BulkUploadUtil.java 10 Mar 2009 13:06:33 -0000      1.9.2.1
@@ -26,6 +26,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.mmbase.bridge.Node;
@@ -86,7 +87,7 @@
             log.debug("contentType: " + binary.getContentType());
          }
 
-         if (isZipFile(binary)) {
+         if (isZipFile(binary.getContentType(), binary.getOriginalFileName())) 
{
             log.debug("unzipping content");
             nodes.addAll(createNodesInZip(manager, new 
ZipInputStream(binary.getInputStream())));
          }
@@ -101,13 +102,20 @@
    }
 
 
-   private static boolean isZipFile(BinaryData binary) {
+   public static boolean isZipFile(String contentType, String fileName) {
 
       for (String element : ZIP_MIME_TYPES) {
-         if (element.equalsIgnoreCase(binary.getContentType())) {
+         if (element.equalsIgnoreCase(contentType)) {
             return true;
          }
       }
+      
+      //Sometimes browsers don't return a nice mime-type (for example 
application/octet-stream)
+      //So checking on extension might be a good idea too.
+      if (getExtension(fileName).equalsIgnoreCase(".zip")) {
+         return true;
+      }
+      
       return false;
    }
 
@@ -143,6 +151,9 @@
                }
                continue;
             }
+            if (log.isDebugEnabled()) {
+               log.debug("reading file (from ZIP): '" + entry.getName() + "'");
+            }
             count++;
             // create temp file for zip entry, create a node from it and
             // remove the temp file
@@ -181,15 +192,22 @@
    }
 
 
-   private static boolean isImage(String fileName) {
+   public static boolean isImage(String fileName) {
+      if (StringUtils.isBlank(fileName)) {
+         return false;
+      }
       if (supportedImages == null) {
          initSupportedImages();
       }
-      return fileName != null && 
supportedImages.contains(getExtension(fileName).toLowerCase());
+      
+      return supportedImages.contains(getExtension(fileName).toLowerCase());
    }
 
 
-   private static String getExtension(String fileName) {
+   public static String getExtension(String fileName) {
+      if (StringUtils.isBlank(fileName)) {
+         return null;
+      }
       int index = fileName.lastIndexOf('.');
       if (index < 0) {
          return null;
@@ -226,5 +244,11 @@
       System.out.println(isImage(getExtension("test.bummer")));
       System.out.println(isImage(""));
       System.out.println(isImage(" "));
+
+      //Also test the isZipFile method
+      //Also test the isZipFile method
+      System.out.println(isZipFile("content","helloworld.zip")); //Should be 
true
+      
System.out.println(isZipFile("application/x-zip-compressed","helloworld.zipper"));
 //Should be true
+      System.out.println(isZipFile("content","helloworld.zipper")); //Should 
be false
    }
 }
\ No newline at end of file
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to