Dateiverwaltung für die WebBox
ulrich
2018-03-05 ac72fe96abe90bee2d3ca5c1e2cab2cc5e9c1e39
src/java/de/uhilger/filecms/api/FileMgr.java
@@ -18,14 +18,10 @@
package de.uhilger.filecms.api;
import de.uhilger.filecms.data.Bild;
import de.uhilger.filecms.data.FileRef;
import de.uhilger.filecms.pub.AbstractComparator;
import de.uhilger.filecms.pub.FileNameComparator;
import java.awt.Container;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import de.uhilger.wbx.Bild;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -44,6 +40,7 @@
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.io.FileUtils;
/**
@@ -93,7 +90,7 @@
  private List<FileRef> listInt(String relPath, String orderBy, String order) {
    Bild bild = new Bild();
    List<FileRef> files = new ArrayList();
    if (!relPath.startsWith(".")) {
    if (!relPath.startsWith(".") && !relPath.contains("WEB-INF") && !relPath.contains("META-INF")) {
      if (relPath.length() == 0) {
        FileRef namedPublicFolder = new FileRef(PUB_DIR_NAME, true);
        logger.finer(namedPublicFolder.getAbsolutePath());
@@ -129,9 +126,11 @@
              fname = fname.substring(0, fname.length() - 1);
            }
            logger.fine(fname);
            FileRef ref = new FileRef(fname, fileArray[i].isDirectory());
            ref.setMimetype(bild.getMimeType(fileArray[i]));
            files.add(ref);
            if(!fname.contains("WEB-INF") && !fname.contains("META-INF")) {
              FileRef ref = new FileRef(fname, fileArray[i].isDirectory());
              ref.setMimetype(bild.getMimeType(fileArray[i]));
              files.add(ref);
            }
          }
        }
      }
@@ -385,28 +384,24 @@
        nurname = bildName.substring(0, dotpos);
      }
      Image image = Toolkit.getDefaultToolkit().getImage(original.getAbsolutePath());
      MediaTracker mediaTracker = new MediaTracker(new Container());
      mediaTracker.addImage(image, 0);
      try {
        mediaTracker.waitForID(0);
          // 120, 240, 500, 700, 1200
        if (!mediaTracker.isErrorAny()) {
          for (int i = 0; i < Bild.GR.length; i++) {
            StringBuffer buf = new StringBuffer();
            buf.append(nurname);
            buf.append(bild.getVariantenName(i));
            buf.append(ext);
            File newImgFile = new File(dir, buf.toString());
            if (!newImgFile.exists()) {
              logger.fine(original.getAbsolutePath() + " " + newImgFile.getAbsolutePath());
              bild.writeImageFile(image, bild.getVariantenGroesse(i), bild.getMimeType(original), newImgFile.getAbsolutePath());
              //bild.writeImageFile(image, photo.getVariantenGroesse(i), photo.getMimetype(), photo.getAbsolutePath(basisPfad), photo.getVariantenName(basisPfad, i));
            }
          }
      for (int i = 0; i < Bild.GR.length; i++) {
        StringBuffer buf = new StringBuffer();
        buf.append(nurname);
        buf.append(bild.getVariantenName(i));
        buf.append(ext);
        File newImgFile = new File(dir, buf.toString());
        try {
          Thumbnails.of(original)
                  .size(bild.getVariantenGroesse(i), bild.getVariantenGroesse(i))
                  .keepAspectRatio(true)
                  .outputQuality(0.7)
                  .toFile(newImgFile);
        } catch (IOException ex) {
          logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
        }
      } catch (IOException | InterruptedException ex) {
        logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
      }
      return "ok";
    } else {
@@ -414,6 +409,42 @@
    }
  }
  
  public String bildRotieren(String relPath, String bildName) {
    if (!relPath.startsWith(".")) {
      File dir = getTargetDir(relPath);
      File original = new File(dir, bildName);
      String ext = "";
      String nurname = bildName;
      int dotpos = bildName.indexOf(".");
      if (dotpos > -1) {
        ext = bildName.substring(dotpos);
        nurname = bildName.substring(0, dotpos);
      }
      StringBuffer buf = new StringBuffer();
      buf.append(nurname);
      buf.append("-rot");
      buf.append(ext);
      File newImgFile = new File(dir, buf.toString());
      logger.fine("original: " + original.getAbsolutePath() + " newImgFile: " + newImgFile.getAbsolutePath());
      try {
        Thumbnails.of(original)
                .scale(1)
                .rotate(90)
                .toFile(newImgFile);
      } catch (IOException ex) {
        logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
      }
      return "ok";
    } else {
      return "Pfad micht erlaubt.";
    }
  }
  public String extractZipfile(String relPath, String filename) {
    String result = null;
    if (!relPath.startsWith(".")) {