東芝から発売されているFlashAirを用いた開発を行う人々向けのまとめwikiです。※本wikiは東芝及びフィックスターズ、キオクシアとは何の関係もありません。お問合わせは管理者へお願いします。

概要

150MBまでの最新のファイルを自動で探索しDropboxにアップロードするサンプルです。
ファイルの書き込みをしないので安全ですが、但し、書き込まれた時の特定フォルダ内最新1ファイルしかアップロードできません。
LUA_SD_EVENTの設定が必要です。


ライセンス

注意

当初はうまく動いていましたが、SSL関係のエラーなのか、
現在はError argument:c003fe09が発生し、動作しません。
2017年現在治ったようです

スクリプト

-----------------dropbox_upload.lua---------------------

--150MBまでの最新のファイルを自動で探索しDropboxにアップロードするサンプル

--ファイルの書き込みをしないので安全。
--但し、書き込まれた時の特定フォルダ内最新1ファイルしかアップロードしない。

--捜索対象のフォルダ(空欄=root)
--末端に/を付けないこと。ファイル探索には成功するが、Dropbox側で怒られる
fpath = "/DCIM/101JVCSO";

--ここにアクセストークン。自分用のAPI登録をしたなら、Generated access tokenで生成できる。
--公式のサンプルのように、appKeyやappSecretを使っていろいろする必要はない。
token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

--アップロード先フォルダ
--App folder– Access to a single folder created specifically for your app.にしたなら、
--アプリフォルダ内にファイルができる。
--Full Dropbox– Access to all files and folders in a user's Dropbox.にしたなら
--自由に。ファイル破壊も発生するので注意。

--uploadDir="/someFolder"
uploadDir="";

--注意:CONFIGでIPアドレスを固定していると、接続してもやっぱり固定されているので色々失敗する。
--DHCP_Enabled=YESにすること。

--注意:STAモードもしくはBridgeモードにすること。
--        APPAUTOTIME=0とすること。(通信が切られかねないため)
--    LUA_SD_EVENT=/dropbox_upload.luaのようにすること。(このファイルをdrobpx_upload.luaにした場合)


--作業用変数
filename = "";

--プロセス開始

   sleep(6000); --ファイル書き込み待機(カメラや使う機器が書き込み終了するまでにかかる時間に合わせて変更する。)
      --ここを下手に短くすると、カメラがエラーを吐いたり、写真が破損したり、1つまえに撮影した画像がアップロードされたりする
 
--ファイル走査
 --http://dotnsf.blog.jp/archives/2015-09-16.htmlより、最新のファイルを探す
 last_filepath = ""
 max_mod = 0
 for filename in lfs.dir(fpath) do
  filepath = fpath .. "/" .. filename
  mod = lfs.attributes( filepath, "modification" )
  if mod > max_mod then
   max_mod = mod
   last_filepath = filepath
  end
 end

 --ファイルがなければ終了
 if(last_filepath == "")then print("No file."); goto EXIT; end;

 filename = last_filepath;

--アップロード処理開始

 --ファイル本体をデータに
 mes = "<!--WLANSDFILE-->";
 --ファイルサイズを取得
 len_s = lfs.attributes(filename,"size");

 --アップロード先パス設定
 uploadPath = uploadDir..filename;
 --Dropbox引数(上書き・通知の有無)
 dropboxArg = '{"path": "'.. uploadPath ..'","mode": "overwrite"}';

 --ヘッダー情報
 hed = {
  ["Content-Length"] = len_s,
  ["Authorization"] = "Bearer "..token,
  ["Dropbox-API-Arg"] = dropboxArg,
  ["Content-Type"] = "application/octet-stream"
 };

   --
 --リクエスト
 b,c,h = fa.request{
  url = "https://content.dropboxapi.com/2/files/upload",
  method = "POST",
  headers = hed,
  body = mes,
  file = filename,
  bufsize=1460*10
 };

 --エラーが帰ってきたらファイルに保存する
 if(c>200)then
  f=io.open("res","w")
  f:write(h)
  f:write(b)
  f:close();
   end

 --ブラウザでのデバッグ用
 print(dropboxArg);

 print(c)
 print(h)
 print(b)

::EXIT::
 --終了処理

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

スマートフォンの方は画面下部よりPC版に切り替えることをおすすめします

アクセス解析中

忍者アナライズ

GoogleAnalytics

編集にはIDが必要です