예제 #1
0
파일: upload.php 프로젝트: pete-naish/4hair
<?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);