サーバに画像を送ってサーバにその画像を保存する方法について書きます。クライアント側(openFrameworks)では2つの方法を書いておきます。
1. ofxHttpFormで送信する場合(openFrameworks)
以下のようにofxHttpFormを使うと簡単に送信ができます。
1 2 3 4 5 6 |
ofxHttpForm form; form.action = "http://your_saver.com/upload.php"; form.method = OFX_HTTP_POST; form.addFile("file", "image.png"); httpUtils.addForm(form); |
2. curlで送信する場合(openFrameworks)
もう一つ紹介しておきます。curlを使っているためOF0.8でも同様のことができるはずです。これはOF0.7での画像アップロード方法がわからず苦肉の策としてやっているのでofxHttpFormの方がスマートであります。
内容としてはcurlで画像をphpにアップロードしてレスポンスをresponse.xmlに保存しています。
1 |
system("curl -F file=@../../../data/image.png http://your_saver.com/upload.php > ../../../data/response.xml”); |
サーバ側(PHP)
サーバ側のPHP(upload.php)は以下のようになっています。単純に画像をOFから受け取ったらレスポンスとしてエラー番号かxmlを返すようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php if ($_FILES["file"]["error"] > 0){ echo "Error: " . $_FILES["file"]["error"] . "<br />"; }else{ if (is_uploaded_file($_FILES["file"]["tmp_name"])) { if (move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) { chmod($_FILES["file"]["name"], 0644); $image = ImageCreateFromPNG($_FILES["file"]["name"]); ImageJPEG($image, "image.jpg", 100); echo '<root><url>https://www.google.co.jp/</url></root>'; }else{ echo "500"; } }else{ echo "400"; } } ?> |
コメントを残す