This commit is contained in:
2026-08-04 11:34:01 +07:00
commit 36e9225078
3 changed files with 102 additions and 0 deletions
+15
View File
@@ -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
+80
View File
@@ -0,0 +1,80 @@
<?php
declare(strict_types=1);
header('Content-Type: application/json');
$uploadDir = __DIR__ . '/../../storage/uploads';
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode([
'success' => 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,
]);
+7
View File
@@ -0,0 +1,7 @@
<?php
http_response_code(404);
echo json_encode([
"message" => "API Running"
]);