Dateiverwaltung für die WebBox
ulrich
2017-02-27 42fecef285c712f2a8d9b1b6371edc6ea9d9fac6
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;
      }
    }
  }