Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Define allowed file types, extensions, and size limit
- $allowed_types = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
- $allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
- $s_in_MB = 2; //allowed size in MB
- $max_size = $s_in_MB * 1024 * 1024; // 4MB in bytes
- $upload_directory = 'uploads/'; // Directory to save the uploaded files - must have slash at the end
- if ($_FILES['upload']) {
- $file = $_FILES['upload'];
- $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
- $filename = uniqid() . '.' . $extension;
- $file_path = $upload_directory . $filename;
- $file_type = mime_content_type($file['tmp_name']);
- $file_size = $file['size'];
- // Sanitize filename
- $filename = preg_replace("/[^a-zA-Z0-9.]/", "_", $filename);
- // Validate file type and extension
- if (!in_array($file_type, $allowed_types) || !in_array($extension, $allowed_extensions)) {
- $response = [
- "uploaded" => false,
- "error" => [
- "message" => "Invalid file type or extension."
- ]
- ];
- }
- // Validate file size
- elseif ($file_size > $max_size) {
- $response = [
- "uploaded" => false,
- "error" => [
- "message" => "File is too large. Maximum size allowed is $s_in_MB MB."
- ]
- ];
- }
- // Check if the file is an actual image
- elseif (exif_imagetype($file['tmp_name']) === false) {
- $response = [
- "uploaded" => false,
- "error" => [
- "message" => "The file is not a valid image."
- ]
- ];
- }
- // Attempt to upload the file securely
- elseif (move_uploaded_file($file['tmp_name'], $file_path)) {
- // Prepare the JSON response with file URL and filename
- $response = [
- "uploaded" => true,
- "url" => $upload_directory . $filename, // Adjust URL as per your setup
- "filename" => $filename // Return the filename
- ];
- } else {
- $response = [
- "uploaded" => false,
- "error" => [
- "message" => "File could not be uploaded."
- ]
- ];
- }
- // Return the response as JSON
- header('Content-Type: application/json');
- echo json_encode($response);
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment