commit 36e9225078364c79625df322bad04c49bbf2544a Author: Hunan Date: Tue Aug 4 11:34:01 2026 +0700 Test 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