2013-07-17 5 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, поэтому функциональность для выполнения завитки строго предназначена для тестирования. функция upload - это функция api. Кто-нибудь знает, как это сделать или что я делаю неправильно, и это возможно.

ответ

0

Ну, на самом деле я закодированы что-то для этого: https://github.com/chris-l/urImgAPI

Моя потребность была так: У меня был сайт, размещенный на виртуальной машине, и я имел форму, которая позволяла загружать изображения, но Я не хотел тратить пропускную способность виртуальной машины, обслуживая изображения, поэтому я получил дешевую услугу совместного размещения (которая имела только php) для изображений и разработала RESTful API на php, который был установлен там, что позволило мне сохранять изображения из любого места с помощью этого API.

API имеет функцию безопасности, предотвращающую случайное удаление файлов на моем файловом сервере, требуя подписи. Подпись работает следующим образом:

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

И вы должны передать подпись в качестве параметра в запросе. Таким образом, вы никогда не передаете секретный ключ и не предотвращаете, чтобы какой-либо другой человек мог хранить изображения на вашем файловом сервере.

И хотя я создал API для загрузки изображений, его можно легко изменить для размещения любого файла. (возможно, я изменю его для этого в будущем)

Выпускается под лицензией AGPL3, поэтому проверьте его, и я надеюсь, что это может быть полезно для вас.

Смежные вопросы