使用CURL接受文件上传php

时间:2013-07-17 04:51:39

标签: php file-upload curl

我希望在一台服务器上编写一个函数来接受从任何其他服务器上传的文件,换句话说就是类似于api。

假设在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, 'upload_file=@'.$data['img_file']['tmp_name']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
}

请注意,这是作为API使用,因此执行curl的功能仅用于测试。上传功能是api功能。有没有人知道如何做到这一点或我做错了什么,这甚至是可能的。

1 个答案:

答案 0 :(得分:0)

嗯,实际上我已为此编写了一些内容:https://github.com/chris-l/urImgAPI

我的需要是这样的: 我有一个托管在虚拟机上的网站,我有一个允许上传图像的表单,但我不想通过提供图像来浪费虚拟机的带宽,所以我得到了一个廉价的共享托管服务(其中只有php)用于图像,并在php上开发了RESTful API,允许我使用此API从任何地方保存图像。

API具有安全功能,可以通过要求签名来防止随机人员在我的文件服务器上保存内容。签名的工作方式如下:

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

您必须将签名作为参数传递给请求。这样,您永远不会传输密钥并帮助防止其他人将图像存储在您的文件服务器上。

虽然我创建了用于上传图片的API,但它可以轻松更改为托管任何类型的文件。 (也许我将来会改变它)

根据AGPL3许可证发布,请检查它,我希望它对您有用。

相关问题