<?php
ini_set('upload_max_filesize', '100M'); ini_set('post_max_size', '110M'); ini_set('memory_limit', '256M'); set_time_limit(0);
header('Content-Type: application/json');
$uploadErrors = [ 0 => 'File uploaded successfully', 1 => 'File exceeds server limit (upload_max_filesize)', 2 => 'File exceeds form limit (MAX_FILE_SIZE)', 3 => 'File only partially uploaded', 4 => 'No file was uploaded', 6 => 'Missing temporary folder', 7 => 'Failed to write file to disk', 8 => 'PHP extension stopped the upload' ];
$targetDir = "/var/www/html/assets/upload/"; $fileName = basename($_FILES["fileToUpload"]["name"]); $targetFile = $targetDir . $fileName; $fileSize = $_FILES["fileToUpload"]["size"]; $maxFileSize = 100 * 1024 * 1024;
if ($_FILES["fileToUpload"]["error"] !== UPLOAD_ERR_OK) { die(json_encode([ 'success' => false, 'error' => $uploadErrors[$_FILES["fileToUpload"]["error"]] ?? 'Unknown upload error' ])); }
if ($fileSize > $maxFileSize) { die(json_encode([ 'success' => false, 'error' => 'File too large. Maximum allowed: 100MB' ])); }
if (!file_exists($targetDir)) { if (!mkdir($targetDir, 0777, true)) { die(json_encode([ 'success' => false, 'error' => 'Failed to create upload directory' ])); } }
if (!is_writable($targetDir)) { die(json_encode([ 'success' => false, 'error' => 'Upload directory is not writable' ])); }
if (file_exists($targetFile)) { $fileInfo = pathinfo($fileName); $fileName = $fileInfo['filename'] . '_' . time() . '.' . $fileInfo['extension']; $targetFile = $targetDir . $fileName; }
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) { echo json_encode([ 'success' => true, 'filename' => htmlspecialchars($fileName), 'filesize' => filesize($targetFile) ]); } else { $error = error_get_last(); die(json_encode([ 'success' => false, 'error' => 'Failed to move uploaded file', 'details' => $error['message'] ?? 'Unknown error' ])); } ?>
|