2016-05-23 2 views
1

У меня есть эта система, реализованная на моем сайте, и мне это нужно, когда кто-то загружает файл, только одно сообщение отправлено на мою учетную запись электронной почты. Я сделал это, но он посылает мне десятки писем при загрузке больших файлов (вероятно, из-за кусков):Отправить сообщение при загрузке файла (Plupload)

upload.php

$valor = $_REQUEST['cuadro']; 
$fileName = $_REQUEST["name"]; 

if($valor != "tradin" || $valor != "tradsp"){ 
    $mensaje = "User called " .$valor. " has uploaded the file " .$fileName. " into the server"; 
    $mensaje = wordwrap($mensaje, 70, "\r\n"); 
    mail('verysecret', 'File Uploaded', $mensaje); 
} 

$targetDir = ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "uploads" . DIRECTORY_SEPARATOR . $valor; 
//$targetDir = 'uploads'; 
$cleanupTargetDir = true; // Remove old files 
$maxFileAge = 7 * 24 * 3600; // Temp file age in seconds 


// Create target dir 
if (!file_exists($targetDir)) { 
    @mkdir($targetDir); 
} 

// Get a file name 
if (isset($_REQUEST["name"])) { 
    $fileName = $_REQUEST["name"]; 
} elseif (!empty($_FILES)) { 
    $fileName = $_FILES["file"]["name"]; 
} else { 
    $fileName = uniqid("file_"); 
} 

$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName; 

// Chunking might be enabled 
$chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0; 
$chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0; 


// Remove old temp files  
if ($cleanupTargetDir) { 
    if (!is_dir($targetDir) || !$dir = opendir($targetDir)) { 
     die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}'); 
    } 

    while (($file = readdir($dir)) !== false) { 
     $tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file; 

     // If temp file is current file proceed to the next 
     if ($tmpfilePath == "{$filePath}.part") { 
      continue; 
     } 

     // Remove temp file if it is older than the max age and is not the current file 
     if (preg_match('/\.part$/', $file) && (filemtime($tmpfilePath) < time() - $maxFileAge)) { 
      @unlink($tmpfilePath); 
     } 
    } 
    closedir($dir); 
} 


// Open temp file 
if (!$out = @fopen("{$filePath}.part", $chunks ? "ab" : "wb")) { 
    die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}'); 
} 

if (!empty($_FILES)) { 
    if ($_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) { 
     die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}'); 
    } 

    // Read binary input stream and append it to temp file 
    if (!$in = @fopen($_FILES["file"]["tmp_name"], "rb")) { 
     die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}'); 
    } 
} else {  
    if (!$in = @fopen("php://input", "rb")) { 
     die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}'); 
    } 
} 

while ($buff = fread($in, 4096)) { 
    fwrite($out, $buff); 
} 

@fclose($out); 
@fclose($in); 

// Check if file has been uploaded 
if (!$chunks || $chunk == $chunks - 1) { 
    // Strip the temp .part suffix off 
    rename("{$filePath}.part", $filePath); 
} 

// Return Success JSON-RPC response 
die('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}'); 

Кто-нибудь имеет представление о том, чтобы сделать это?

Спасибо за ваше время,

Альберто

ответ

0

Поместите свой код для отправки сообщения после того, как все куски выгружаются. после завершения загрузки. Скорее всего, это условие, которое проверяет, если каждый фрагмент загружается если ($ чанки || $ порций == $ глыбы -! 1) { введите код здесь }