<?php require '../../../runtime.php'; PerchSession::commence(); // HTTP headers for no cache etc header("Expires: Mon, 02 Jan 2012 00:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // Settings $targetDir = PERCH_RESFILEPATH; // 5 minutes execution time @set_time_limit(5 * 60); // Get parameters $chunk = isset($_REQUEST["chunk"]) ? (int) $_REQUEST["chunk"] : 0; $chunks = isset($_REQUEST["chunks"]) ? (int) $_REQUEST["chunks"] : 0; $fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : ''; $contentType = ''; // Clean the fileName for security reasons $fileName = strtolower(preg_replace('/[^\\w\\._\\-]+/', '', $fileName)); $originalFileName = $fileName; /* If this is the first chunk, check the file name is unique. If it's not unique, generate a unique one. Then store the file name in the session for future chunks to reference. */ if ($chunk === 0) { if (file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName)) { $ext = strrpos($fileName, '.'); $fileName_a = substr($fileName, 0, $ext);