コマンドライン上じゃなくてPHPの中でやりたい

色々調べたけど、参考になりそうなのがなかった。

よくよく /usr/local/bin/curl の使い方を見てみたらあることに気づいて。

@filepath

ってつければいいんだ。

ってことでクラスを作ってみた。

<?php
class FileUploadByCurl
{
    private $_path = null;
    private $_url = null;
    private $_formName = null;
    private $_params = array();

    public function __construct($path, $url, $formName, $otherParams = array())
    {
        $this->_path = $path;
        $this->_url = $url;
        foreach($otherParams as $name => $value) {
            $this->_params[$name] = $value;
        }
        $this->_params[$formName] = '@'.$path;
    }

    public function __destruct()
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->_url );
        curl_setopt($ch, CURLOPT_POST, 1 );
        curl_setopt($ch, CURLOPT_POSTFIELDS, $this->_params);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $res = curl_exec($ch);

        if(curl_errno($ch)) {
            print curl_error($ch);
            die('Unable to upload file.');
        }
        curl_close($ch);

        return $res;
    }
}
?>

呼び出しサンプル

<?php
include('FileUploadByCurl.php');
$filename = '/tmp/hoge.jpg';
$url = 'http://hogehoge.com';
$formname = 'userfile'
$curlObj = new FileUploadByCurl($filename,$url,$formname);
?>

エラー処理なんてしてないけどね!!