FlashAirハッカソンに参加してきました。
賞は取れませんでしたが、成果物(自分が担当した部分)をアップしておきたいと思います。
できることは、FlashAirからファイルなどをサーバーにPOSTで送信します。
【FlashAirの/sample.txtをサーバーにPOSTで送るLUAスクリプト】
boundary = "--61141483716826"
contenttype = "multipart/form-data; boundary=" .. boundary
filepath = "/sample.txt"
mes = "--"..boundary.."\r\n"
.."Content-Disposition: form-data; name=\"upfile\"; filename=\""..filepath .."\"\r\n"
.."Content-Type: text/plain\r\n"
.."\r\n"
.."\r\n"
.."--" .. boundary .. "--\r\n"
blen = lfs.attributes(filepath,"size") + string.len(mes) - 17
b,c,h = fa.request{url = "http://takahirohirata.com/upload.php",
method = "POST",
headers = {["Content-Length"] = tostring(blen),
["Content-Type"] = contenttype},
file = filepath,
body = mes
}
(使用する場合はurl(”http://takahirohirata.com/upload.php”)を変更してください)
【POSTで送られたデータをfilesフォルダに保存するCGI(php)】
<?php
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) {
chmod("files/" . $_FILES["upfile"]["name"], 0644);
echo $_FILES["upfile"]["name"] . "をアップロードしました。";
} else {
echo "ファイルをアップロードできません。";
}
} else {
echo "ファイルがありません。";
}
?>
(使用する場合はfilesフォルダを作成してください)
デバッグの方法が何かと面倒なのですが、自分のやり方としては、
FlashAirのCONFIGファイルの設定をインターネット同時接続モード
APPMODE=6
にし、パソコンのwifiをFlashAirに接続し、パソコンブラウザでFlashAirのLUAスクリプトを直接実行する(ブラウザのURLに記述して直接呼び出す)方法を取ってました。
ご参考までに!