2013-07-17 2 views
1

다른 서버에서 업로드 한 파일을 받아들이 기 위해 한 서버에 함수를 쓰려고합니다. 즉, api와 유사합니다.CURL을 사용하여 파일 업로드 허용 PHP

www.upload.com을 가정하면 파일을 업로드하는 업로드 스크립트가 있습니다. 게시물을 작성하고 그 서버에 저장하는 대신 파일을 저장하기 위해 fileserver.com에서 스크립트를 말아 주었으면합니다. 파일을 저장할 fileserver.com에

내 기능이

function upload($data) { 

    $uploaddir = '/data/'; 
    $uploadfile = $uploaddir . 'filename.jpg'; 

    if(move_uploaded_file($data['upload_file'], $uploadfile)) { 
     return 'saved successfully'; 
    } else { 
     return 'bad file'; 
    } 

    } 

같은 외모와 upload.com 서버에 나는이와 예제를 테스트입니다 :

if($_POST) { 

$ch=curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://fileserver.com/upload.php'); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '[email protected]'.$data['img_file']['tmp_name']); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
curl_close($ch); 
} 

명심하시기 바랍니다 이것은 API로 의도 된 것이므로 컬을하기위한 기능은 엄격하게 테스트 용입니다. 업로드 기능은 API 기능입니다. 누구든지이 일을하는 방법이나 내가 잘못하고있는 일을 알고 있으며 이것이 가능할 수도 있습니다. 내가 가상 머신에서 호스팅되는 사이트를했다 , 거기에 내가 이미지를 업로드 할 수 폼을했지만 : https://github.com/chris-l/urImgAPI

내 필요성이 같았다 :

답변

0

음, 사실은 내가 그것에 대해 뭔가를 코딩 한 나는 이미지를 제공함으로써 가상 머신의 대역폭을 낭비하고 싶지 않았기 때문에 이미지를위한 값싼 공유 호스팅 서비스 (PHP 만 가지고 있음)를 얻었고 거기에 설치된 PHP에서 RESTful API를 개발했다. 이 API를 사용하여 어디에서나 이미지를 저장할 수 있습니다.

API에는 서명이 필요하여 임의의 사람이 내 파일 서버에서 물건을 저장할 수 없도록하는 보안 기능이 있습니다. 서명은 다음과 같이 작동합니다.

$signature = md5(md5sum(your_image_file) . "your secret key"); 

그리고 요청시 매개 변수로 서명을 전달해야합니다. 그렇게하면 비밀 키를 전송하지 않고 다른 사람이 파일 서버에 이미지를 저장할 수 없게됩니다.

이미지를 업로드하기위한 API를 만들었지 만 모든 종류의 파일을 호스팅하도록 쉽게 변경할 수 있습니다. (아마도 나중에 변경 될 수 있습니다)

AGPL3 라이센스에 따라 배포되므로 잘 확인해 주시길 바랍니다.

관련 문제