From 42fecef285c712f2a8d9b1b6371edc6ea9d9fac6 Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Mon, 27 Feb 2017 22:26:21 +0000
Subject: [PATCH] Upload in gewaehltes Verzeichnis eingebaut und einige Modes bei Codemirror hinzugefuegt

---
 src/java/de/uhilger/filecms/api/UploadServlet.java |   44 +++++++++++++++++++++++++++++---------------
 1 files changed, 29 insertions(+), 15 deletions(-)

diff --git a/src/java/de/uhilger/filecms/api/UploadServlet.java b/src/java/de/uhilger/filecms/api/UploadServlet.java
index 1a07401..927e25c 100644
--- a/src/java/de/uhilger/filecms/api/UploadServlet.java
+++ b/src/java/de/uhilger/filecms/api/UploadServlet.java
@@ -28,6 +28,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.security.Principal;
+import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
 import java.util.logging.Level;
@@ -56,6 +57,8 @@
   public static final String DESC = "file-cms uploader";
 
   private static final Logger logger = Logger.getLogger(UploadServlet.class.getName());
+  
+  private String targetDirStr;
 
   /**
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
@@ -68,6 +71,7 @@
    */
   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
+    
     //logger.log(Level.INFO, "start");
     boolean isMultipart = ServletFileUpload.isMultipartContent(request);
 
@@ -91,6 +95,7 @@
 
         // Process the uploaded items
         Iterator<FileItem> iter = items.iterator();
+        FileItem fileItem = null;
         while (iter.hasNext()) {
           FileItem item = iter.next();
 
@@ -100,10 +105,13 @@
             //File base = repository.getParentFile().getParentFile().getParentFile().getParentFile();
             //File webapps = new File(base, "webapps");
             //logger.info(webapps.getAbsolutePath());
-            File targetDir = getTargetDir(request, PUB_DIR_NAME);
-            logger.log(Level.FINE, "rufe processUploadedFile");
-            processUploadedFile(targetDir, item, true);
+            fileItem = item;
           }
+        }
+        File targetDir = getTargetDir(request, targetDirStr);
+        if(targetDir != null && fileItem != null) {
+          logger.log(Level.FINER, "targetDir before upload: " + targetDir.getAbsolutePath());
+          processUploadedFile(targetDir, fileItem, true);
         }
       } catch (Exception ex) {
         logger.log(Level.SEVERE, null, ex);
@@ -129,17 +137,20 @@
   }
 
   private File getTargetDir(HttpServletRequest request, String relPath) {
-    logger.finer(relPath);
-    String targetPath = null;
-    if(relPath.startsWith(PUB_DIR_NAME)) {
-      targetPath = PUB_DIR_PATH + getUserName(request) + "/" + relPath.substring(PUB_DIR_NAME.length());
-    } else if(relPath.startsWith(HOME_DIR_NAME)) {
-      targetPath = HOME_DIR_PATH + getUserName(request) + "/" + relPath.substring(HOME_DIR_NAME.length());
-    } else {
-      // kann eigentlich nicht sein..
+    File targetDir = null;
+    if(relPath != null) {
+      logger.finer(relPath);
+      String targetPath = null;
+      if(relPath.startsWith(PUB_DIR_NAME)) {
+        targetPath = PUB_DIR_PATH + getUserName(request) + relPath.substring(PUB_DIR_NAME.length());
+      } else if(relPath.startsWith(HOME_DIR_NAME)) {
+        targetPath = HOME_DIR_PATH + getUserName(request) + relPath.substring(HOME_DIR_NAME.length());
+      } else {
+        // kann eigentlich nicht sein..
+      }
+      logger.finer(targetPath);
+      targetDir = new File(getBase().getAbsolutePath(), targetPath);
     }
-    logger.finer(targetPath);
-    File targetDir = new File(getBase().getAbsolutePath(), targetPath);
     return targetDir;
   }
   
@@ -172,8 +183,8 @@
       long sizeInBytes = item.getSize();
       // Process a file upload
       if (writeToFile) {
-        //logger.log(Level.INFO, "writeToFile " + fileName);
         File uploadedFile = new File(targetDir, fileName);
+        logger.log(Level.FINER, "writeToFile " + uploadedFile.getAbsolutePath());
         item.write(uploadedFile);
       } else {
         InputStream uploadedStream = item.getInputStream();
@@ -189,8 +200,11 @@
     if (item.isFormField()) {
       String name = item.getFieldName();
       String value = item.getString();
-      //logger.log(Level.INFO, "field name: " + name + ", value: " + value);
+      logger.log(Level.FINER, "field name: " + name + ", value: " + value);
       //...
+      if(name.equals("pfad")) {
+        targetDirStr = value;
+      }
     }
   }
 

--
Gitblit v1.9.3