티스토리 뷰

반응형

카페24.com을 이용해서 파일을 서버에 업로드하는데 한계가 있다.


사진이나 pdf 파일등을 많이 업로드할때 유용한 사이트가 있는가? 가격면에도 좋은것 말이다.
ChatGPT의 말:
ChatGPT
카페24의 업로드 제한으로 인해 대용량 파일을 효율적으로 관리하려면 클라우드 스토리지 서비스를 활용하는 것이 좋습니다. 아래는 사진이나 PDF 파일 등을 많이 업로드할 때 유용한 클라우드 서비스와 그 요금제를 비교한 표입니다:

서비스명 무료 용량 유료 요금제 및 용량 월 요금(원) 연 요금(원)
네이버 마이박스 30GB 80GB, 180GB, 330GB, 2TB, 10TB 1,650 ~ 58,300 16,500 ~ 583,000


구글 드라이브 15GB 100GB, 200GB, 2TB, 5TB, 10TB, 20TB, 30TB 2,400 ~ 119,000 24,000 ~ 1,190,000


마이크로소프트 원드라이브 5GB 100GB, 1TB (오피스 365 포함) 2,900 ~ 8,900 29,900 ~ 89,000
애플 아이클라우드 5GB 50GB, 200GB, 2TB 1,100 ~ 11,100 13,200 ~ 133,200
드롭박스 2GB 2TB (Plus), 3TB (Professional) 약 15,000 ~ 24,000 약 150,000 ~ 240,000


추천 서비스:

네이버 마이박스: 기본 무료 용량이 30GB로 넉넉하며, 유료 요금제도 비교적 저렴합니다. 특히, 네이버 플러스 멤버십을 이용하면 추가 혜택을 받을 수 있습니다.

구글 드라이브: 다양한 용량 옵션과 구글 생태계와의 연동이 강점입니다. 100GB 요금제가 월 2,400원으로 경제적입니다.

마이크로소프트 원드라이브: 1TB 요금제에 오피스 365가 포함되어 있어 문서 작업이 많은 경우 유용합니다.

각 서비스의 요금제와 기능을 비교하여, 본인의 필요와 예산에 맞는 서비스를 선택하시기 바랍니다.

예를들어 네이버 마이박스를 사용하면 우리가 서버에 php 코드로 업로드를 www의 uploads라는 공간에 저장을 한다면 
php코드로 마이박스의 코드는 어떻게 만들 수 있나?


ChatGPT의 말:
ChatGPT
네이버 마이박스는 일반 웹 서버와 달리 API를 통해 데이터를 전송해야 합니다. PHP에서 네이버 마이박스 API를 사용하여 파일을 업로드하려면 네이버 클라우드 플랫폼 계정이 필요하며, API 키를 발급받아야 합니다. 기본 흐름은 다음과 같습니다.

네이버 클라우드 플랫폼에서 API 설정

네이버 클라우드 플랫폼 계정에서 프로젝트를 생성하고, Object Storage API를 활성화합니다.
API 키와 Secret 키를 발급받습니다.
네이버 Object Storage API 사용을 위한 PHP 코드
네이버의 Object Storage에 파일을 업로드하기 위해 PHP의 curl 라이브러리를 이용하여 REST API를 호출해야 합니다. 아래는 간단한 예제 코드입니다.

<?php
// API 설정
$access_key = 'YOUR_ACCESS_KEY';
$secret_key = 'YOUR_SECRET_KEY';
$bucket_name = 'YOUR_BUCKET_NAME';
$object_name = 'uploads/your_file_name.pdf'; // 저장 경로 및 파일명

// 파일 경로
$file_path = $_FILES['file']['tmp_name'];

// 업로드를 위한 URL
$url = "https://kr.object.ncloudstorage.com/{$bucket_name}/{$object_name}";

// 요청 헤더 구성
$date = gmdate('D, d M Y H:i:s T');
$signature = base64_encode(hash_hmac('sha256', "PUT\n\n\n{$date}\n/{$bucket_name}/{$object_name}", $secret_key, true));
$authorization = "NCP {$access_key}:{$signature}";

// cURL 설정 및 실행
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Host: kr.object.ncloudstorage.com",
    "Date: {$date}",
    "Authorization: {$authorization}",
    "Content-Type: application/octet-stream"
]);
curl_setopt($ch, CURLOPT_INFILE, fopen($file_path, 'rb'));
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file_path));

// 응답 확인
$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL Error: ' . curl_error($ch);
} else {
    echo 'File uploaded successfully to Naver MyBox.';
}

curl_close($ch);
?>
코드 설명
access_key와 secret_key는 네이버 클라우드 플랫폼에서 발급받은 값으로 변경해야 합니다.
$bucket_name은 미리 생성된 네이버 클라우드의 버킷 이름입니다.
curl 라이브러리를 통해 PUT 요청을 보내 파일을 업로드합니다.
주의 사항
네이버 마이박스의 경우 API 제한이 있으므로 파일의 크기와 요청 빈도를 확인해야 합니다.
네이버 마이박스는 개인 사용자가 아닌 네이버 클라우드의 Object Storage를 기반으로 작업하므로, 일반 웹 호스팅과는 다릅니다.

예를 들어 구글 드라이브도 같은 원리인가?
ChatGPT의 말:
ChatGPT
네, 구글 드라이브도 유사하게 API를 통해 파일을 업로드해야 합니다. 구글 드라이브는 OAuth 2.0 인증을 사용하고, PHP에서 구글 드라이브 API를 이용해 파일을 업로드하려면 OAuth 인증 절차를 거쳐야 합니다. 다음은 구글 드라이브에 PHP로 파일을 업로드하는 기본적인 흐름입니다.

1. 구글 API 콘솔 설정
Google Cloud Console에서 프로젝트를 생성하고, Google Drive API를 활성화합니다.
OAuth 2.0 클라이언트 ID를 생성하고, 클라이언트 ID와 비밀 키를 발급받습니다.
리디렉션 URI를 설정할 때, 개발 환경에서는 http://localhost 같은 URI를 사용하면 됩니다.


2. Google API PHP Client 설치
PHP로 구글 API를 사용하려면 Google API PHP Client 라이브러리를 설치해야 합니다.

 이 라이브러리는 Composer를 통해 설치할 수 있습니다.

composer require google/apiclient:^2.0


3. PHP 코드로 구글 드라이브에 파일 업로드
아래는 구글 드라이브에 파일을 업로드하는 예제 코드입니다.

<?php
require_once 'vendor/autoload.php';

session_start();

// OAuth 클라이언트 설정
$client = new Google_Client();
$client->setClientId('YOUR_CLIENT_ID');
$client->setClientSecret('YOUR_CLIENT_SECRET');
$client->setRedirectUri('YOUR_REDIRECT_URI');
$client->addScope(Google_Service_Drive::DRIVE_FILE);

// OAuth 인증
if (!isset($_GET['code'])) {
    $authUrl = $client->createAuthUrl();
    echo "<a href='$authUrl'>구글 드라이브 인증</a>";
    exit;
} else {
    $client->authenticate($_GET['code']);
    $_SESSION['access_token'] = $client->getAccessToken();
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

$client->setAccessToken($_SESSION['access_token']);

// Google Drive Service 초기화
$service = new Google_Service_Drive($client);

// 업로드할 파일 설정
$file = new Google_Service_Drive_DriveFile();
$file->setName('your_file_name.pdf');
$file->setMimeType('application/pdf');

// 파일 업로드
$fileData = file_get_contents($_FILES['file']['tmp_name']);
$createdFile = $service->files->create($file, [
    'data' => $fileData,
    'mimeType' => 'application/pdf',
    'uploadType' => 'multipart'
]);

echo "File uploaded to Google Drive with ID: " . $createdFile->id;
?>
코드 설명
OAuth 인증: 처음 방문 시 구글 로그인 페이지로 리디렉션되어 인증을 진행하며, 사용자가 구글 드라이브 접근 권한을 승인하면 코드가 실행됩니다.
Google_Service_Drive 객체를 통해 파일을 업로드할 준비를 합니다.
파일 업로드: 파일의 메타데이터를 설정한 후, files->create 메서드를 호출하여 파일을 업로드합니다.
주의사항
이 코드는 로컬 환경에서 세션을 사용하여 토큰을 저장합니다. 실제 서비스에서는 데이터베이스나 안전한 스토리지에 토큰을 저장하는 것이 좋습니다.
구글 드라이브의 업로드 제한이 있으므로 파일 크기와 API 요청 빈도를 고려해야 합니다.
요약
구글 드라이브 업로드는 네이버 마이박스와 유사한 API 기반 업로드 방식이지만, 구글은 OAuth 2.0 인증이 필수입니다.


나의 말:
그렇다면 기존의 내가 가지고 있는 파일 업로드 로직이 있다.

구글 드라이브를 사용한다면 어떻게 코드를 바꾸는 것인가?
예를들어 알려주면 좋겠다.

아래는 내가 php로 카페24 서버에 업로드 하는 로직이다.

 <?php  
if(!isset($_SESSION))      
session_start(); 
if(isset($_SESSION["DB"]))
$DB = $_SESSION["DB"] ;
 $level= $_SESSION["level"];
 $user_name= $_SESSION["name"];
 $user_id= $_SESSION["userid"];  
 
 /*  파일 및 이미지를 서버에 올리기 위한 통합 모듈 제작
 서버 저장위치 : 일반 첨부파일 이미지 함께 사용 fileuploads
 fileuploads 필드구성 (id, tablename, item, parentid, realname, savename) 
 본문의 form에 hidden 형식으로 전달되도록 반드시 지정할 것
 
 <!-- 전달함수 설정 input hidden -->
<input type="hidden" id="id" name="id" value="<?= isset($id) ? $id : '' ?>" >   
<input type="hidden" id="parentid" name="parentid" value="<?= isset($parentid) ? $parentid : '' ?>" >   
<input type="hidden" id="fileorimage" name="fileorimage" value="<?= isset($fileorimage) ? $fileorimage : '' ?>" >   
<input type="hidden" id="item" name="item" value="<?= isset($item) ? $item : '' ?>" >   
<input type="hidden" id="upfile" name="upfile" value="<?= isset($upfile) ? $upfile : '' ?>" >   
<input type="hidden" id="tablename" name="tablename" value="<?= isset($tablename) ? $tablename : '' ?>" >   
<input type="hidden" id="savetitle" name="savetitle" value="<?= isset($savetitle) ? $savetitle : '' ?>" >
<input type="hidden" id="pInput" name="pInput" value="<?= isset($pInput) ? $pInput : '' ?>" >   
<input type="hidden" id="mode" name="mode" value="<?= isset($mode) ? $mode : '' ?>" >
<input type="hidden" id="timekey" name="timekey" value="<?= isset($timekey) ? $timekey : '' ?>" >
<input type="hidden" id="upfilename" name="upfilename" value="upfile">

 
 파일 저장시 new파일인 경우는 난수를 발생시켜 저장한 후 그 이름을 전달해서 파일의 수정/신규 저장시 기록하고, (임시저장기술 적용)
 아닐경우 그 파일을 삭제하는 루틴제작
 
 */
 
 ini_set('display_errors', 1);
 
include "../php/common.php";
 
isset($_REQUEST["id"])  ? $id=$_REQUEST["id"] :   $id=''; 
isset($_REQUEST["fileorimage"])  ? $fileorimage=$_REQUEST["fileorimage"] : $fileorimage=''; // file or image
isset($_REQUEST["item"])  ? $item=$_REQUEST["item"] :   $item=''; 
isset($_REQUEST["upfilename"])  ? $upfilename=$_REQUEST["upfilename"] : $upfilename=''; 
isset($_REQUEST["tablename"])  ? $tablename=$_REQUEST["tablename"] :  $tablename=''; 
isset($_REQUEST["savetitle"])  ? $savetitle=$_REQUEST["savetitle"] :  $savetitle='';   // log기록 저장 타이틀

// var_dump($upfilename);
// var_dump($_FILES[$upfilename]['name']);

// 파일이 업로드 되었는지 여부와 배열인지 확인
$countfiles = isset($_FILES[$upfilename]['name']) && is_array($_FILES[$upfilename]['name']) ? count($_FILES[$upfilename]['name']) : 0;

require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();

// 이미지인 경우
if($fileorimage=='image') {
for($i=0;$i<$countfiles;$i++){
$filename = $_FILES[$upfilename]['name'][$i];
if($filename !='') {   
//Auth key
define('UPLOAD_ERR_INI_SIZE',"100000000");

$uploads_dir = '../fileuploads'; //업로드 폴더 상위 fileuploads 폴더선택
$allowed_ext = array('jpg','jpeg','png','gif','JPG','JPEG','PNG','GIF'); //이미지 파일만 허용
 
 
//첨부파일이 있다면
$uploadSize = 100000000;
@mkdir("$upload_dir", 0707);
@chmod("$upload_dir", 0707);

// 올라간 파일의 퍼미션을 변경합니다.
chmod("$uploads_dir", 0755);

// 변수 정리
$error = $_FILES[$upfilename]['name'][$i];
$name = $_FILES[$upfilename]['name'][$i];     
$tmpNm =  explode( '.', $name );
$ext = strtolower(end($tmpNm));

 echo "$ext <br>";
// 확장자 확인
if( !in_array($ext, $allowed_ext) ) {
echo "허용되지 않는 확장자입니다.";
exit;
}

   // $newfile=$tmpNm[0].".".$ext ;
$new_file_name = date("Y_m_d_H_i_s");
$newfilename1 = $new_file_name."_" . $i . "." . $ext;      
$url1 = $uploads_dir.'/'.$newfilename1; //올린 파일 명 그대로 복사해라.  시간초 등으로 파일이름 만들기

// 사진회전시키기
// 이미지 로드 및 회전 처리 부분
if ($ext == 'jpg' || $ext == 'jpeg') {
// JPEG 이미지인 경우
 // $tmpimage = imagecreatefromjpeg($url1);
 $exif = exif_read_data($url1);
 
 print '사진 정보' . $exif['Orientation'] . "<br>";
 
if(!empty($exif['Orientation']))
{
switch($exif['Orientation'])
{
case 8:
$url1 = imagerotate($url1,90,0);
break;
case 3:
$url1 = imagerotate($url1,180,0);
break;
case 6:
$url1 = imagerotate($url1,-90,0);
break;

}
}


//요기부분 수정했습니다.
$filename1 = compress_image($_FILES[$upfilename]["tmp_name"][$i], $url1, 70); //실제 파일용량 줄이는 부분

list($width, $height, $type, $attr) = getImagesize($_FILES[$upfilename]["tmp_name"][$i]);

if($width > 700){
 $switch_s=80;
}else{
 $switch_s=100;
}
$buffer = file_get_contents($url1);
 
// 파일 정보 출력
echo "<h2>파일 정보</h2> <h1>
<ul>
<li>자료번호: $num</li>
<li>파일명: $name</li>
<li>확장자: $ext</li>
<li>url: {$url1}</li>
<li>filename: {$filename1}</li>
</ul> </h1>";

$re_image = new Image($filename1);
$rate=$width/$height;
if($width>$height) {
$re_image -> width(800);
$re_image -> height(800/$rate);
}
else
{
$re_image -> width(800*$rate);
$re_image -> height(800);
}
$re_image -> save();
// insert
try{  
$pdo->beginTransaction();   
$sql = "insert into " . $DB . ".fileuploads ";
$sql .=" (tablename, item, parentid, realname, savename) " ;        
$sql .=" values(?, ?, ?, ?, ?) " ;        
   
 $stmh = $pdo->prepare($sql); 
 
 $stmh->bindValue(1, $tablename, PDO::PARAM_STR);   
 $stmh->bindValue(2, $item, PDO::PARAM_STR);   
 $stmh->bindValue(3, $id, PDO::PARAM_STR);             
 $stmh->bindValue(4, $filename, PDO::PARAM_STR);   
 $stmh->bindValue(5, $newfilename1, PDO::PARAM_STR);   
 
 
 $stmh->execute();
 $pdo->commit(); 
} catch (PDOException $Exception) {
   $pdo->rollBack();
   print "오류: ".$Exception->getMessage();
 }  
}
elseif ($ext == 'png') {
// PNG 이미지인 경우
// $tmpimage = imagecreatefrompng($url1);
// PNG 이미지 압축 및 저장 로직

//요기부분 수정했습니다.
$filename1 = compress_image($_FILES[$upfilename]["tmp_name"][$i], $url1, 70); //실제 파일용량 줄이는 부분

list($width, $height, $type, $attr) = getImagesize($_FILES[$upfilename]["tmp_name"][$i]);

if($width > 700){
 $switch_s=80;
}else{
 $switch_s=100;
}
$buffer = file_get_contents($url1);
 
// 파일 정보 출력
echo "<h2>파일 정보</h2> <h1>
<ul>
<li>자료번호: $num</li>
<li>파일명: $name</li>
<li>확장자: $ext</li>
<li>url: {$url1}</li>
<li>filename: {$filename1}</li>
</ul> </h1>";

$re_image = new Image($filename1);
$rate=$width/$height;
if($width>$height) {
$re_image -> width(800);
$re_image -> height(800/$rate);
}
else
{
$re_image -> width(800*$rate);
$re_image -> height(800);
}
$re_image -> save();


// insert
try{  
$pdo->beginTransaction();   
$sql = "insert into " . $DB . ".fileuploads ";
$sql .=" (tablename, item, parentid, realname, savename) " ;        
$sql .=" values(?, ?, ?, ?, ?) " ;        
   
 $stmh = $pdo->prepare($sql); 
 
 $stmh->bindValue(1, $tablename, PDO::PARAM_STR);   
 $stmh->bindValue(2, $item, PDO::PARAM_STR);   
 $stmh->bindValue(3, $id, PDO::PARAM_STR);             
 $stmh->bindValue(4, $filename, PDO::PARAM_STR);   
 $stmh->bindValue(5, $newfilename1, PDO::PARAM_STR);   
 
 
 $stmh->execute();
 $pdo->commit(); 
} catch (PDOException $Exception) {
   $pdo->rollBack();
   print "오류: ".$Exception->getMessage();
 }  

  } 
} // end of for statement    
} // end of if
else  
{
// file인 경우
for($i=0;$i<$countfiles;$i++){
$filename = $_FILES[$upfilename]['name'][$i];
if($filename !='') {   
//Auth key
define('UPLOAD_ERR_INI_SIZE',"100000000");

$uploads_dir = '../fileuploads'; //업로드 폴더 상위 fileuploads 폴더선택
 
//첨부파일이 있다면
$uploadSize = 100000000;
@mkdir("$upload_dir", 0707);
@chmod("$upload_dir", 0707);

// 올라간 파일의 퍼미션을 변경합니다.
chmod("$uploads_dir", 0755);

// 변수 정리
$error = $_FILES[$upfilename]['name'][$i];
$name = $_FILES[$upfilename]['name'][$i];    // 파일의 이름 
$tmp_file = $_FILES[$upfilename]['tmp_name'][$i];  // 서버에 업로드시 필요함
$tmpNm =  explode( '.', $name );
$ext = strtolower(end($tmpNm));

   // $newfile=$tmpNm[0].".".$ext ;
$new_file_name = date("Y_m_d_H_i_s");
$newfilename1 = $new_file_name."_" . $i . "." . $ext;      
$url1 = $uploads_dir.'/'.$newfilename1; //올린 파일 명 그대로 복사해라.  시간초 등으로 파일이름 만들기

//서버에 임시로 저장된 파일은 스크립트가 종료되면 사라지므로 파일을 이동해야함.
     move_uploaded_file($tmp_file, $url1);
// insert
try{  
$pdo->beginTransaction();   
$sql = "insert into " . $DB . ".fileuploads ";
$sql .=" (tablename, item, parentid, realname, savename) " ;        
$sql .=" values(?, ?, ?, ?, ?) " ;        
   
 $stmh = $pdo->prepare($sql); 
 
 $stmh->bindValue(1, $tablename, PDO::PARAM_STR);   
 $stmh->bindValue(2, $item, PDO::PARAM_STR);   
 $stmh->bindValue(3, $id, PDO::PARAM_STR);             
 $stmh->bindValue(4, $filename, PDO::PARAM_STR);   
 $stmh->bindValue(5, $newfilename1, PDO::PARAM_STR);   
 
 
 $stmh->execute();
 $pdo->commit(); 
} catch (PDOException $Exception) {
   $pdo->rollBack();
   print "오류: ".$Exception->getMessage();
 }  

}

} // end of for statement   


}

// log 기록 남기기

 $data=date("Y-m-d H:i:s") . " - " . $_SESSION["userid"] . " - " . $_SESSION["name"] . "  " . $tablename . "  " . $savetitle . " - file 기록" ;
 require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
 $pdo = db_connect();
 $pdo->beginTransaction();
 $sql = "insert into " . $DB . ".logdata(data) values(?) " ;
 $stmh = $pdo->prepare($sql); 
 $stmh->bindValue(1, $data, PDO::PARAM_STR);   
 $stmh->execute();
 $pdo->commit(); 

?>     
   

ChatGPT의 말:

기존에 카페24 서버에 업로드하던 방식을 구글 드라이브로 변경하려면 아래와 같은 단계로 작업을 수정해야 합니다.

구글 드라이브 API 설정:

Google Cloud Console에서 프로젝트를 생성하고 Google Drive API를 활성화하여 OAuth 2.0 클라이언트 ID와 비밀 키를 발급받습니다.


Google API PHP Client 설치:

composer require google/apiclient:^2.0


OAuth 2.0 인증 및 파일 업로드: PHP 코드의 주요 수정 포인트는 파일을 구글 드라이브에 업로드하는 부분입니다. 이를 위해 OAuth 인증 과정을 추가하고 Google_Service_Drive 객체를 통해 파일을 업로드하는 로직을 작성해야 합니다.

기존 코드 수정 예제
아래는 기존 파일 업로드 로직을 구글 드라이브 API를 사용하도록 수정한 샘플 코드입니다.

<?php
require_once 'vendor/autoload.php';

session_start();

// 구글 OAuth2 인증 설정
$client = new Google_Client();
$client->setClientId('YOUR_CLIENT_ID');
$client->setClientSecret('YOUR_CLIENT_SECRET');
$client->setRedirectUri('YOUR_REDIRECT_URI');
$client->addScope(Google_Service_Drive::DRIVE_FILE);

if (!isset($_SESSION['access_token']) && !isset($_GET['code'])) {
    $authUrl = $client->createAuthUrl();
    echo "<a href='$authUrl'>구글 드라이브 인증</a>";
    exit;
} elseif (isset($_GET['code'])) {
    $client->authenticate($_GET['code']);
    $_SESSION['access_token'] = $client->getAccessToken();
    header('Location: ' . filter_var($client->getRedirectUri(), FILTER_SANITIZE_URL));
} else {
    $client->setAccessToken($_SESSION['access_token']);
}

// Google Drive 서비스 초기화
$service = new Google_Service_Drive($client);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 업로드할 파일 가져오기
    $filename = $_FILES['upfile']['name'][0]; // 첫 번째 파일
    $file_tmp = $_FILES['upfile']['tmp_name'][0];

    // 파일 메타데이터 설정
    $fileMetadata = new Google_Service_Drive_DriveFile(array(
        'name' => $filename,
        'parents' => array('YOUR_FOLDER_ID') // 폴더에 업로드하려면 폴더 ID 추가
    ));

    // 파일 업로드 실행
    $content = file_get_contents($file_tmp);
    $uploadedFile = $service->files->create($fileMetadata, array(
        'data' => $content,
        'mimeType' => mime_content_type($file_tmp),
        'uploadType' => 'multipart',
        'fields' => 'id'
    ));

    // 파일 업로드 성공 메시지
    if ($uploadedFile) {
        echo "파일이 구글 드라이브에 업로드되었습니다. 파일 ID: " . $uploadedFile->id;
    } else {
        echo "파일 업로드 실패";
    }
}
?>


코드 변경 포인트
OAuth 2.0 인증 처리: 최초 접근 시 인증 URL로 리디렉션 후 구글 드라이브 접근 권한을 부여받습니다.
파일 업로드: 기존 서버 파일 경로를 구글 드라이브에 맞게 수정하여 Google_Service_Drive 객체를 사용해 업로드합니다.


YOUR_FOLDER_ID: 구글 드라이브 내 특정 폴더에 업로드하려면 해당 폴더의 ID를 넣어야 합니다.


주요 수정 사항 요약


기존 카페24 서버의 파일 업로드 경로를 구글 드라이브 API 요청으로 교체.


fileuploads 디렉토리 대신 Google Drive API를 사용하여 파일을 저장하며, 파일 ID를 구글 드라이브 링크로 활용할 수 있습니다.


업로드된 파일의 ID를 데이터베이스에 저장하여 파일 접근 경로를 관리합니다.
이렇게 하면 카페24 서버 대신 구글 드라이브에 파일을 업로드하여 사용할 수 있습니다.

반응형
댓글