최초 커밋
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
use Aws\S3\S3Client;
|
||||
use Aws\Credentials\Credentials;
|
||||
|
||||
// === 버킷/키 설정 ===
|
||||
$bucket_name = "baron-software-test";
|
||||
$account_id = "81fa2d48964d31dd0da9558f9ce601d1";
|
||||
$access_key = "9ade5915f7abd402db60a87f3b3b6d76";
|
||||
$secret_key = "a1a1cfd59f739977f98fb73f214894e39dbac9a39b1f6208020aa2e1303ea54c";
|
||||
|
||||
// === 프론트에서 넘어온 값 ===
|
||||
$product_code = $_POST['product_code'] ?? '';
|
||||
$sw_version = $_POST['sw_version'] ?? '';
|
||||
$filename = $_POST['filename'] ?? '';
|
||||
$content_type = $_POST['content_type'] ?? 'application/octet-stream';
|
||||
|
||||
if (!$product_code || !$sw_version || !$filename) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => '필수값 누락 (product_code, sw_version, filename)']);
|
||||
exit;
|
||||
}
|
||||
|
||||
// === 제품 코드 → 실제 폴더명 매핑 ===
|
||||
$map = [
|
||||
"1" => "eg-bim",
|
||||
"2" => "tova",
|
||||
"3" => "gaia",
|
||||
"999" => "test"
|
||||
];
|
||||
|
||||
$folder = $map[$product_code] ?? $product_code; // 혹시 매핑 없으면 그대로 사용
|
||||
|
||||
// === 업로드 경로 ===
|
||||
// ex) eg-bim/1.2.3/setup_eg-bim_1.2.3.exe
|
||||
$key = "{$folder}/{$sw_version}/{$filename}";
|
||||
|
||||
try {
|
||||
$credentials = new Credentials($access_key, $secret_key);
|
||||
|
||||
$s3 = new S3Client([
|
||||
'region' => 'auto',
|
||||
'version' => 'latest',
|
||||
'endpoint' => "https://{$account_id}.r2.cloudflarestorage.com",
|
||||
'credentials' => $credentials,
|
||||
]);
|
||||
|
||||
// Presign URL 생성
|
||||
$cmd = $s3->getCommand('PutObject', [
|
||||
'Bucket' => $bucket_name,
|
||||
'Key' => $key,
|
||||
'ContentType' => $content_type
|
||||
]);
|
||||
|
||||
$request = $s3->createPresignedRequest($cmd, '+1 hour');
|
||||
|
||||
echo json_encode([
|
||||
'url' => (string)$request->getUri(), // 브라우저에서 PUT 할 주소
|
||||
'key' => $key // DB에 저장할 전체 경로
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode([
|
||||
'error' => 'Presign 실패',
|
||||
'detail' => $e->getMessage()
|
||||
]);
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user