Пример #1
0
 protected function saveIncomingFile()
 {
     $file_name = getRequest('filename');
     $buffer = outputBuffer::current('HTTPOutputBuffer');
     $content = $buffer->getHTTPRequestBody();
     if (!strlen($file_name)) {
         return "failure\nEmpty filename.";
     }
     list($dir_name, , $extension) = array_values(getPathInfo($file_name));
     if (!strlen($extension) || !umiFile::isAllowedFileType($extension)) {
         return "failure\nUnknown file type.";
     }
     if (!isset($_SESSION['1c_latest_catalog-file'])) {
         $_SESSION['1c_latest_catalog-file'] = "";
     }
     $i_flag = $_SESSION['1c_latest_catalog-file'] == $file_name ? FILE_APPEND : 0;
     $base_name = substr($file_name, 0, strlen($file_name) - strlen($extension) - 1);
     $temp_dir = self::$importDirectory;
     if (!is_dir($temp_dir)) {
         mkdir($temp_dir, 0777, true);
     }
     if (strtolower($extension) == "xml") {
         file_put_contents($temp_dir . $base_name . "." . $extension, $content, $i_flag);
     } else {
         $quota_byte = getBytesFromString(mainConfiguration::getInstance()->get('system', 'quota-files-and-images'));
         if ($quota_byte != 0) {
             $all_size = getBusyDiskSize(array('/files', '/images'));
             if ($all_size + strlen($content) >= $quota_byte) {
                 return "failure\n max dirsize in /files and /images summary.";
             }
         }
         $images_dir = "./images/cms/data/" . $dir_name . "/";
         if (!is_dir($images_dir)) {
             mkdir($images_dir, 0777, true);
         }
         file_put_contents("./images/cms/data/" . $file_name, $content, $i_flag);
         if (realpath("./images/cms/data/" . $file_name) != CURRENT_WORKING_DIR . "/images/cms/data/" . $file_name) {
             unlink("./images/cms/data/" . $file_name);
             return "failure\nWrong file path.";
         }
     }
     $_SESSION['1c_latest_catalog-file'] = $file_name;
     return "success";
 }