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 |   62 +++++++++++++++++++++++-------
 1 files changed, 47 insertions(+), 15 deletions(-)

diff --git a/src/java/de/uhilger/filecms/api/UploadServlet.java b/src/java/de/uhilger/filecms/api/UploadServlet.java
index deed276..927e25c 100644
--- a/src/java/de/uhilger/filecms/api/UploadServlet.java
+++ b/src/java/de/uhilger/filecms/api/UploadServlet.java
@@ -1,3 +1,21 @@
+/*
+    Dateiverwaltung - File management in your browser
+    Copyright (C) 2017 Ulrich Hilger, http://uhilger.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as
+    published by the Free Software Foundation, either version 3 of the
+    License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
 package de.uhilger.filecms.api;
 
 import static de.uhilger.filecms.api.FileMgr.HOME_DIR_NAME;
@@ -10,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;
@@ -38,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>
@@ -50,6 +71,7 @@
    */
   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
+    
     //logger.log(Level.INFO, "start");
     boolean isMultipart = ServletFileUpload.isMultipartContent(request);
 
@@ -73,6 +95,7 @@
 
         // Process the uploaded items
         Iterator<FileItem> iter = items.iterator();
+        FileItem fileItem = null;
         while (iter.hasNext()) {
           FileItem item = iter.next();
 
@@ -82,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);
@@ -111,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;
   }
   
@@ -154,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();
@@ -171,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