コマンドライン上じゃなくて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); ?>
エラー処理なんてしてないけどね!!