Dateiverwaltung für die WebBox
ulrich
2017-03-21 6bd2c116db33972d971235120d9fa9107f2b4525
Entpacken
3 files modified
90 ■■■■■ changed files
src/java/de/uhilger/filecms/api/FileMgr.java 69 ●●●●● patch | view | raw | blame | history
web/ui/index.html 1 ●●●● patch | view | raw | blame | history
web/ui/ui.js 20 ●●●●● patch | view | raw | blame | history
src/java/de/uhilger/filecms/api/FileMgr.java
@@ -27,16 +27,21 @@
import java.awt.Toolkit;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.commons.io.FileUtils;
/**
@@ -359,6 +364,70 @@
    return "ok";
  }
  public String extractZipfile(String relPath, String filename) {
    String result;
    try {
      File targetDir = getTargetDir(relPath);
      File archive = new File(targetDir, filename);
      if(extract(archive)) {
        result = "ok";
      } else {
        result = "error while extracting";
      }
    } catch(Exception ex) {
      result = ex.getLocalizedMessage();
      logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
    }
    return result;
  }
  /**
     * extract a given ZIP archive to the folder respective archive resides in
     * @param archive  the archive to extract
     * @throws Exception
     */
    private boolean extract(File archive) throws Exception {
        ZipFile zipfile = new ZipFile(archive);
        Enumeration en = zipfile.entries();
        while(en.hasMoreElements()) {
            ZipEntry zipentry = (ZipEntry) en.nextElement();
            unzip(zipfile, zipentry, archive.getParent());
        }
        zipfile.close();
        return true;
    }
    /**
     * unzip a given entry of a given zip file to a given location
     * @param zipfile  the zip file to read an entry from
     * @param zipentry  the zip entry to read
     * @param destPath  the path to the destination location for the extracted content
     * @throws IOException
     */
    private void unzip(ZipFile zipfile, ZipEntry zipentry, String destPath) throws IOException {
        byte buf[] = new byte[1024];
        InputStream is = zipfile.getInputStream(zipentry);
        String outFileName = destPath + File.separator + zipentry.getName();
        File file = new File(outFileName);
        if(!zipentry.isDirectory()) {
            file.getParentFile().mkdirs();
            if(!file.exists())
                file.createNewFile();
            FileOutputStream fos = new FileOutputStream(file);
            int i = is.read(buf, 0, 1024);
            while(i > -1) {
                fos.write(buf, 0, i);
                i = is.read(buf, 0, 1024);
            }
            fos.close();
            is.close();
        } else {
            file.mkdirs();
        }
    }
  /* ---- Hilfsfunktionen ---- */
  
web/ui/index.html
@@ -90,6 +90,7 @@
              <a id="saveFileAs" class="dropdown-item" href="#">Speichern unter..</a>
              <div class="dropdown-divider"></div>
              <a id="renameFile" class="dropdown-item" href="#">Umbenennen..</a>
              <a id="m-unzip" class="dropdown-item" href="#">Entpacken</a>
              <div class="dropdown-divider"></div>
              <a id="closeFile" class="dropdown-item" href="#">Schliessen</a>
            </div>
web/ui/ui.js
@@ -56,6 +56,7 @@
  $('#saveFileAs').on('click', fm_menu_datei_speichern_unter);
  $('#closeFile').on('click', fm_menu_datei_schliessen);
  $('#renameFile').on('click', fm_menu_datei_umbenennen);
  $('#m-unzip').on('click', fm_menu_datei_entpacken);
  $('#m-del').on('click', fm_menu_delete);
  $('#m-cut').on('click', fm_menu_cut);
  $('#m-copy').on('click', fm_menu_copy);
@@ -723,6 +724,25 @@
  }
}
function fm_menu_datei_entpacken() {
  var gewaehlte = $('.datei-gewaehlt');
  var fname = $(gewaehlte[0]).text();
  fm_unzip_file(fname);
}
function fm_unzip_file(fn) {
  var m = '?c=de.uhilger.filecms.api.FileMgr&m=extractZipfile';
  m = m + '&p=' + pfad;
  m = m + '&p=' + fn;
  var u = '../svc' + m;
  fm_get(u, "text", function(resp) {
    $('.system-out').empty();
    $('.system-out').append('Rueckmeldung vom Entpacken: ' + resp);
    fm_fusszeile_zeigen();
    fm_get_list(pfad);
  });
}
function fm_rename_file(fn, p, neuerName) {
  var m = '?c=de.uhilger.filecms.api.FileMgr&m=renameFile';
  m = m + '&p=' + p;