From 36e9225078364c79625df322bad04c49bbf2544a Mon Sep 17 00:00:00 2001 From: Hunan Date: Tue, 4 Aug 2026 11:34:01 +0700 Subject: [PATCH] Test --- Dockerfile | 15 ++++++++ public/image/upload.php | 80 +++++++++++++++++++++++++++++++++++++++++ public/index.php | 7 ++++ 3 files changed, 102 insertions(+) create mode 100644 Dockerfile create mode 100644 public/image/upload.php create mode 100644 public/index.php diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..79ea049 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM serversideup/php:8.4-fpm-nginx + +USER root + +WORKDIR /var/www/html + +COPY . . + +RUN mkdir -p storage/uploads \ + && chown -R www-data:www-data storage \ + && chmod -R 775 storage + +USER www-data + +EXPOSE 8080 \ No newline at end of file diff --git a/public/image/upload.php b/public/image/upload.php new file mode 100644 index 0000000..43ee797 --- /dev/null +++ b/public/image/upload.php @@ -0,0 +1,80 @@ + false, + 'message' => 'Method Not Allowed' + ]); + exit; +} + +if (!isset($_FILES['image'])) { + http_response_code(400); + echo json_encode([ + 'success' => false, + 'message' => 'image field required' + ]); + exit; +} + +$file = $_FILES['image']; + +if ($file['error'] !== UPLOAD_ERR_OK) { + http_response_code(400); + echo json_encode([ + 'success' => false, + 'message' => 'Upload failed', + 'error' => $file['error'] + ]); + exit; +} + +$finfo = new finfo(FILEINFO_MIME_TYPE); + +$mime = $finfo->file($file['tmp_name']); + +$allowed = [ + 'image/jpeg' => 'jpg', + 'image/png' => 'png', + 'image/webp' => 'webp', +]; + +if (!isset($allowed[$mime])) { + http_response_code(400); + echo json_encode([ + 'success' => false, + 'message' => 'Invalid image type' + ]); + exit; +} + +$filename = bin2hex(random_bytes(16)) . '.' . $allowed[$mime]; +$destination = $uploadDir . '/' . $filename; + +if (!move_uploaded_file($file['tmp_name'], $destination)) { + http_response_code(500); + echo json_encode([ + 'success' => false, + 'message' => 'Cannot save file' + ]); + exit; +} + +echo json_encode([ + 'success' => true, + 'filename' => $filename, + 'url' => '/uploads/' . $filename, + 'size' => filesize($destination), + 'mime' => $mime, +]); \ No newline at end of file diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..05f1907 --- /dev/null +++ b/public/index.php @@ -0,0 +1,7 @@ + "API Running" +]); \ No newline at end of file