[gatein-commits] gatein SVN: r4995 - exo/portal/branches/3.1.x/component/web/src/main/java/org/exoplatform/upload.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Nov 9 23:09:36 EST 2010


Author: phuong_vu
Date: 2010-11-09 23:09:36 -0500 (Tue, 09 Nov 2010)
New Revision: 4995

Modified:
   exo/portal/branches/3.1.x/component/web/src/main/java/org/exoplatform/upload/UploadService.java
Log:
EXOGTN-3 Support more createUploadResource method that work with Inputstream

Modified: exo/portal/branches/3.1.x/component/web/src/main/java/org/exoplatform/upload/UploadService.java
===================================================================
--- exo/portal/branches/3.1.x/component/web/src/main/java/org/exoplatform/upload/UploadService.java	2010-11-09 23:14:45 UTC (rev 4994)
+++ exo/portal/branches/3.1.x/component/web/src/main/java/org/exoplatform/upload/UploadService.java	2010-11-10 04:09:36 UTC (rev 4995)
@@ -31,6 +31,8 @@
 import org.gatein.common.logging.LoggerFactory;
 
 import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -71,7 +73,7 @@
    /**
     * Create UploadResource for HttpServletRequest
     * 
-    * @param requestow
+    * @param request
     *           the webapp's {@link javax.servlet.http.HttpServletRequest}
     * @throws FileUploadException
     */
@@ -79,10 +81,15 @@
    public void createUploadResource(HttpServletRequest request) throws FileUploadException
    {
       String uploadId = request.getParameter("uploadId");
+      createUploadResource(uploadId, request);
+   }
+
+   public void createUploadResource(String uploadId, HttpServletRequest request) throws FileUploadException
+   {
       UploadResource upResource = new UploadResource(uploadId);
       upResource.setFileName("");// Avoid NPE in UploadHandler
       uploadResources.put(upResource.getUploadId(), upResource);
-      
+
       putToStackInSession(request.getSession(true), uploadId);
 
       double contentLength = request.getContentLength();
@@ -116,6 +123,53 @@
       upResource.setStatus(UploadResource.UPLOADED_STATUS);
    }
 
+   /**
+    * @deprecated use {@link #createUploadResource(String, javax.servlet.http.HttpServletRequest)}  instead
+    *
+    */
+   public void createUploadResource(String uploadId, String encoding, String contentType, double contentLength,
+                                    InputStream inputStream) throws Exception
+   {
+      UploadResource upResource = new UploadResource(uploadId);
+      RequestStreamReader reader = new RequestStreamReader(upResource);
+      int limitMB = uploadLimitsMB_.get(uploadId).intValue();
+      int estimatedSizeMB = (int)contentLength / 1024 / 1024;
+      if (limitMB > 0 && estimatedSizeMB > limitMB)
+      { // a limit set to 0 means unlimited
+         upResource.setStatus(UploadResource.FAILED_STATUS);
+         uploadResources.put(uploadId, upResource);
+         log.debug("Upload cancelled because file bigger than size limit : " + estimatedSizeMB + " MB > "
+            + limitMB + " MB");
+         return;
+      }
+      Map<String, String> headers = reader.parseHeaders(inputStream, encoding);
+
+      String fileName = reader.getFileName(headers);
+      if (fileName == null)
+         fileName = uploadId;
+      fileName = fileName.substring(fileName.lastIndexOf('\\') + 1);
+
+      upResource.setFileName(fileName);
+      upResource.setMimeType(headers.get(RequestStreamReader.CONTENT_TYPE));
+      upResource.setStoreLocation(uploadLocation_ + "/" + uploadId + "." + fileName);
+      upResource.setEstimatedSize(contentLength);
+      uploadResources.put(upResource.getUploadId(), upResource);
+      File fileStore = new File(upResource.getStoreLocation());
+      if (!fileStore.exists())
+         fileStore.createNewFile();
+      FileOutputStream output = new FileOutputStream(fileStore);
+      reader.readBodyData(inputStream, contentType, output);
+
+      if (upResource.getStatus() == UploadResource.UPLOADING_STATUS)
+      {
+         upResource.setStatus(UploadResource.UPLOADED_STATUS);
+         return;
+      }
+
+      uploadResources.remove(uploadId);
+      fileStore.delete();
+   }
+
    @SuppressWarnings("unchecked")
    private void putToStackInSession(HttpSession session, String uploadId)
    {



More information about the gatein-commits mailing list