private function handle_upload()
 {
     $id = null;
     if (isset($_FILES['Filedata']) && !empty($_FILES['Filedata']['tmp_name']) && !empty($_POST['title'])) {
         $FileAPI = new FileAPI(array('pdf'));
         try {
             $imported_filename = $FileAPI->import($_FILES['Filedata']['tmp_name'], $_FILES['Filedata']['name']);
             //Upload war erfolgreich und die Datei wurde korrekt abgelegt.
             //$id = YumpuEpaper_repository::create($imported_filename, $_POST['title']);
             $status = "success";
         } catch (FileAPI_exception $e) {
             $status = "error";
             $message = $e->getMessage();
         } catch (YumpuEpaper_repository_exception $e) {
             /**
              * Wenn möglich sollten wir die importierte Datei direkt entfernen.
              */
             $FileAPI->delete($_FILES['yc_file']['name']);
             $status = "error";
             $message = $e->getMessage();
         }
     } else {
         $status = "error";
         $message = "no input file";
     }
     $upload_response = json_encode(array('status' => $status, 'message' => $message, 'id' => $id, 'filename' => addslashes($imported_filename)));
     $HB = new HtmlBuilder('admin_upload_response.php', $this->plugin_path . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR);
     $HB->assign('upload_response', $upload_response);
     echo $HB->get_data();
 }
Example #2
0
 /**
  * @return array
  */
 public function upload()
 {
     include_once MODX_BASE_PATH . 'assets/plugins/simplefiles/lib/FileAPI.class.php';
     $errorCode = 0;
     if (!empty($_SERVER['HTTP_ORIGIN'])) {
         // Enable CORS
         header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
         header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
         header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Range, Content-Disposition, Content-Type');
     }
     if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
         $this->isExit = true;
         return;
     }
     if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') {
         $dir = $this->params['folder'] . $this->rid . "/";
         $flag = $this->FS->makeDir($dir, $this->modx->config['new_folder_permissions']);
         if (!$flag) {
             $this->modx->logEvent(0, 3, "Cannot create {$dir} .", 'SimpleFiles');
             die;
         }
         $uploadDir = $this->params['folder'] . 'upload/' . $this->rid . '/';
         $this->FS->makeDir($uploadDir, $this->modx->config['new_folder_permissions']);
         $filename = end(explode('filename=', $_SERVER['HTTP_CONTENT_DISPOSITION']));
         $content_range_header = $_SERVER['HTTP_CONTENT_RANGE'];
         $content_range = $content_range_header ? preg_split('/[^0-9]+/', $content_range_header) : null;
         $size = $content_range ? $content_range[3] : null;
         $partfile = MODX_BASE_PATH . $uploadDir . $filename . '.part';
         $in = @fopen("php://input", "rb");
         if (!$content_range[1] && $this->FS->fileSize($partfile) > $content_range[2]) {
             $out = @fopen($partfile, "wb");
         } else {
             $out = fopen($partfile, "ab");
         }
         while ($buff = fread($in, 4096)) {
             @fwrite($out, $buff);
         }
         @fclose($out);
         @fclose($in);
         if ($size && $size == $this->FS->fileSize($partfile)) {
             $name = $this->data->stripName(urldecode($filename));
             $name = $this->FS->getInexistantFilename($dir . $name, true);
             $ext = end(explode('.', $name));
             if (in_array($ext, explode(',', $this->params['allowedFiles']))) {
                 if ($this->FS->moveFile($partfile, $name)) {
                     $this->data->create(array('sf_file' => $this->FS->relativePath($name), 'sf_rid' => $this->rid, 'sf_type' => 'file', 'sf_properties' => json_encode(array('filename' => $this->FS->takeFileName($name), 'basename' => $this->FS->takeFileBasename($name), 'mime' => $this->FS->takeFileMIME($name), 'ext' => $this->FS->takeFileExt($name))), 'sf_title' => preg_replace('/\\.[^.\\s]{2,4}$/', '', urldecode($filename)), 'sf_size' => $size))->save();
                 } else {
                     $errorCode = 101;
                 }
             } else {
                 $errorCode = 7;
             }
             $this->FS->rmDir($this->params['folder'] . 'upload/' . $this->rid);
         }
         // Server response: "HTTP/1.1 200 OK"
         $this->isExit = true;
         $this->output = \FileAPI::makeResponse(array('status' => \FileAPI::OK, 'statusText' => 'OK', 'body' => array('data' => array('errorCode' => $errorCode))));
         return;
     }
 }
Example #3
0
 private static function init()
 {
     if (is_null(self::$_files)) {
         self::$_files = array();
         // http://www.php.net/manual/ru/reserved.variables.files.php#106558
         foreach ($_FILES as $firstNameKey => $arFileDescriptions) {
             foreach ($arFileDescriptions as $fileDescriptionParam => $mixedValue) {
                 self::rRestructuringFilesArray(self::$_files, $firstNameKey, $_FILES[$firstNameKey][$fileDescriptionParam], $fileDescriptionParam);
             }
         }
     }
 }
 private function display()
 {
     if (WP_Yumpu::$API_TOKEN === null) {
         echo '';
         return;
     }
     $HB = new HtmlBuilder('admin_files.php', $this->plugin_path . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR);
     $yumpu_action = isset($_REQUEST['yumpu_action']) ? $_REQUEST['yumpu_action'] : null;
     switch ($yumpu_action) {
         case "create_epaper":
             if (isset($_FILES['yc_file']) && !empty($_FILES['yc_file']['tmp_name']) && !empty($_POST['yc_title'])) {
                 $FileAPI = new FileAPI(array('pdf'));
                 try {
                     $imported_filename = $FileAPI->import($_FILES['yc_file']['tmp_name'], $_FILES['yc_file']['name']);
                     //Upload war erfolgreich und die Datei wurde korrekt abgelegt.
                     YumpuEpaper_repository::create($imported_filename, $_POST['yc_title'], $_POST['yc_description']);
                     $HB->assign('yumpu_success_message', 'upload successfull');
                 } catch (FileAPI_exception $e) {
                     $HB->assign('yumpu_error_message', $e->getMessage());
                 } catch (YumpuEpaper_repository_exception $e) {
                     /**
                      * Wenn möglich sollten wir die importierte Datei direkt entfernen.
                      */
                     $FileAPI->delete($_FILES['yc_file']['name']);
                     $HB->assign('yumpu_error_message', $e->getMessage());
                 }
             } else {
                 $HB->assign('yumpu_error_message', 'no input file or title missing');
             }
             break;
     }
     /**
      * Hier Liste der gesmaten Dokumenten auflisten.
      */
     $ePapers = YumpuEpaper_repository::getAll();
     $HB->assign('epapers', $ePapers);
     echo $HB->get_data();
 }
 public function upload()
 {
     $out = array();
     include_once MODX_BASE_PATH . 'assets/plugins/simplegallery/lib/FileAPI.class.php';
     if (!empty($_SERVER['HTTP_ORIGIN'])) {
         // Enable CORS
         header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
         header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
         header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Range, Content-Disposition, Content-Type');
     }
     if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
         $this->isExit = true;
         return;
     }
     if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') {
         $files = \FileAPI::getFiles();
         // Retrieve File List
         $dir = $this->params['folder'] . $this->rid . "/";
         $flag = $this->FS->makeDir($dir, $this->modx->config['new_folder_permissions']);
         if ($files['sg_files']['error'] == UPLOAD_ERR_OK) {
             $tmp_name = $files["sg_files"]["tmp_name"];
             $name = $this->data->stripName($_FILES["sg_files"]["name"]);
             $name = $this->FS->getInexistantFilename($dir . $name, true);
             $ext = $this->FS->takeFileExt($name);
             if (in_array($ext, array('png', 'jpg', 'gif', 'jpeg'))) {
                 if (@move_uploaded_file($tmp_name, $name)) {
                     $options = "w={$this->modx->config['maxImageWidth']}&h={$this->modx->config['maxImageHeight']}&q=96&ar=x&f={$ext}";
                     if (@$this->data->makeThumb('', $this->FS->relativePath($name), $options)) {
                         $info = getimagesize($name);
                         $properties = array('width' => $info[0], 'height' => $info[1], 'size' => filesize($name));
                         $this->data->create(array('sg_image' => $this->FS->relativePath($name), 'sg_rid' => $this->rid, 'sg_title' => preg_replace('/\\.[^.\\s]{2,4}$/', '', $_FILES["sg_files"]["name"]), 'sg_properties' => $properties))->save(true);
                     } else {
                         @unlink($name);
                         $files['sg_files']['error'] = 100;
                     }
                 }
             } else {
                 $files['sg_files']['error'] = 101;
             }
         }
         //fetchImages($files, $images);
         $json = array('data' => array('_REQUEST' => $_REQUEST, '_FILES' => $files));
         // JSONP callback name
         $jsonp = isset($_REQUEST['callback']) ? trim($_REQUEST['callback']) : null;
         // Server response: "HTTP/1.1 200 OK"
         $this->isExit = true;
         $this->output = \FileAPI::makeResponse(array('status' => \FileAPI::OK, 'statusText' => 'OK', 'body' => $json), $jsonp);
         return $out;
     }
 }
 function serviceAcceptHtml5File()
 {
     if (!empty($_SERVER['HTTP_ORIGIN'])) {
         // Enable CORS
         header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
         header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
         header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Range, Content-Disposition, Content-Type');
         header('Access-Control-Allow-Credentials: true');
     }
     if (strtoupper($_SERVER['REQUEST_METHOD']) != 'POST') {
         exit;
     }
     require_once BX_DIRECTORY_PATH_PLUGINS . 'file-api/server/FileAPI.class.php';
     $aFiles = FileAPI::getFiles();
     // Retrieve File List
     $aReady = array();
     $aImages = array();
     // JSONP callback name
     $sJsonp = isset($_REQUEST['callback']) ? trim($_REQUEST['callback']) : null;
     // upload files and return error messages or uploaded file IDs
     $this->performAcceptHtml5File($aFiles, $aReady);
     // Fetch all image-info from files list
     $this->fetchImagesForAcceptHtml5File($aFiles, $aImages);
     // JSON-data for server response
     $aJson = array('files' => $aReady, 'images' => $aImages, 'data' => array('_REQUEST' => $_REQUEST, '_FILES' => $aFiles));
     // Server response: "HTTP/1.1 200 OK"
     FileAPI::makeResponse(array('status' => FileAPI::OK, 'statusText' => 'OK', 'body' => $aJson), $sJsonp);
     exit;
 }
Example #7
0
}
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    exit;
}
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') {
    $files = FileAPI::getFiles();
    // Retrieve File List
    $images = array();
    // Fetch all image-info from files list
    fetchImages($files, $images);
    // JSONP callback name
    $jsonp = isset($_REQUEST['callback']) ? trim($_REQUEST['callback']) : null;
    // JSON-data for server response
    $json = array('images' => $images, 'data' => array('_REQUEST' => $_REQUEST, '_FILES' => $files));
    // Server response: "HTTP/1.1 200 OK"
    FileAPI::makeResponse(array('status' => FileAPI::OK, 'statusText' => 'OK', 'body' => $json), $jsonp);
    exit;
}
function fetchImages($files, &$images, $name = 'file')
{
    if (isset($files['tmp_name'])) {
        $filename = $files['tmp_name'];
        list($mime) = explode(';', @mime_content_type($filename));
        if (strpos($mime, 'image') !== false) {
            $size = getimagesize($filename);
            $base64 = base64_encode(file_get_contents($filename));
            $images[$name] = array('width' => $size[0], 'height' => $size[1], 'mime' => $mime, 'size' => filesize($filename), 'dataURL' => 'data:' . $mime . ';base64,' . $base64);
        }
    } else {
        foreach ($files as $name => $file) {
            fetchImages($file, $images, $name);
Example #8
0
include './FileAPI.class.php';
if (!empty($_SERVER['HTTP_ORIGIN'])) {
    header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
    header('Access-Control-Allow-Headers: Origin, X-Requested-With');
}
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    exit;
}
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') {
    $files = FileAPI::getFiles();
    $images = array();
    fetchImages($files, $images);
    $jsonp = isset($_REQUEST['callback']) ? trim($_REQUEST['callback']) : null;
    $json = json_encode(array('images' => $images, 'data' => print_r(array('_REQUEST' => $_REQUEST, '_FILES' => FileAPI::getFiles()), true)));
    if (empty($jsonp)) {
        echo $json;
    } else {
        echo '<script type="text/javascript">' . '(function(ctx,jsonp){' . 'if(ctx&&ctx[jsonp]){' . 'ctx[jsonp](200, "OK", "' . addslashes($json) . '")' . '}' . '})(this.parent, "' . $jsonp . '")' . '</script>';
    }
    exit;
}
function fetchImages($files, &$images, $name = 'file')
{
    if (isset($files['tmp_name'])) {
        $filename = $files['tmp_name'];
        list($mime) = explode(';', @mime_content_type($filename));
        if (strpos($mime, 'image') !== false) {
            $content = file_get_contents($filename);
            $images[$name] = 'data:' . $mime . ';base64,' . base64_encode($content);