Test
This commit is contained in:
+15
@@ -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
|
||||
@@ -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,
|
||||
]);
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
http_response_code(404);
|
||||
|
||||
echo json_encode([
|
||||
"message" => "API Running"
|
||||
]);
|
||||
Reference in New Issue
Block a user