파일을 다른 서버로 전송하기 위해 꼭 FTP 나 fopen 으로만 가능한 것은 아닙니다. cUrl 함수로도 FTP의 기능을 충분히 흉내낼 수 있는데, 파일을 일반 변수로 전송할 수 있습니다.

 

로컬에서 파일을 받아 http://example.com/test.php  로 파일을 전송하는데, $_FILES 변수가 아닌 $_POST 의 imagefile 변수로 받는다는 점에 주목해야 합니다.


ex #1)

<? 
/* 
test.php 의 내용 
print_r($_POST); 

// 내용을 임시 파일로 만들어서 uploaded 폴더에 저장합니다. 
$str = base64_decode($_POST['imagefile']); 
$tmpfname = tempnam("/tmp", "test_");  
$handle = fopen($tmpfname, "wb");  
fwrite($handle, $str);  
fclose($handle);  

move_uploaded_file($tmpfname, "uploaded/test.gif"); 
*/ 

if($_FILES

    
$filename $_FILES['userfile']['tmp_name']; 
    
$handle fopen($filename"r"); 
    
$data base64_encode(fread($handlefilesize($filename))); 

    
// $data is file data 
    
$post   = array('imagefile' => $data); 
    
$timeout 30
    
$curl    curl_init(); 

    
curl_setopt($curlCURLOPT_URL'http://example.com/test.php'); 
    
curl_setopt($curlCURLOPT_TIMEOUT$timeout); 
    
curl_setopt($curlCURLOPT_POST1); 
    
curl_setopt($curlCURLOPT_RETURNTRANSFER1); 
    
curl_setopt($curlCURLOPT_POSTFIELDS$post); 

    
$str curl_exec($curl); 

    
curl_close ($curl); 
    
print_r($str); 
    
/* 
    결과: 
    Array ( 
        [imagefile] => /9j/4AAQSkZJRgABAgEAYABgAAD/7gAOQWRv.... 
    )  
    */ 


?> 

<form enctype="multipart/form-data" action="" method="POST">  
    이 파일을 전송합니다: <input name="userfile" type="file" />  
    <input type="submit" value="파일 전송" />  
</form>



블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요