WiFi対応のSDメモリカードである TOSHIBA FlashAir(TM) のAPIに接続するための.NET版クラスライブラリです。
FlashAirのAPIの詳細はTOSHIBAの開発者サイトで公開されています。ネットワークの通信(HTTP)は完全にカプセル化されています。また各APIの仕様を尊重しつつ、.NET的にデータを取扱い安いようにメソッドの名前、パラメーターなどを再構成しています。
.NET Portable ライブラリの形式でまとめてあるので、一般の.NETアプリケーションをはじめ、Windows Storeアプリ、Windows Phone、ASP.NETウェブアプリなど幅広い用途に使用できます。
ライブラリの設計ポリシーとして、メソッドやプロパティの名称は、オリジナルのAPIを尊重しつつ英語としてわかりやすいものに置き換える。時刻情報やフラグは DateTime、 Enum などに、バイナリ(ファイル)の転送には System.IO.Streamを使うなど、.NETネイティブなオブジェクト表現に置き換えしています。
- .NET Framework 4
- Silverlight 5
- Windows 8
- Windows Phone 8.1
- Windows Phone Silverlight 8
- .NET 4.0以降
- 依存パッケージ Microsoft.Net.Http (Microsoft.Bcl/Microsoft.Bcl.Build)
http://flashair/ へ接続するとした場合の、ファイルリストを取得、ファイルをStreamとして読み込み、ディレクトリを再帰的にリストするサンプルです。
usingFlashAirClient;
...FlashAir fa;int depth =0;voidRun(){fa=newFlashAir("http://flashair/");ListDirectory();}voidListDirectory(Stringdir="/"){Console.WriteLine(String.Format("Directory {0} contains {1} files.",dir,fa.Command.FileCount(dir)));foreach(varfileinfa.Command.FileList(dir)){Console.Write(String.Join("",Enumerable.Repeat(" ",depth)));Console.WriteLine(String.Format("{0} {1} {2} {3} {4}",file.Directory,file.Name,file.Time,file.Size,file.Attributes));if((file.Attributes&FileAttribute.Directory)==FileAttribute.Directory){depth++;ListDirectory(System.IO.Path.Combine(file.Directory,file.Name));depth--;}else{ExifInfoex;varst=fa.Thumbnail.Get(System.IO.Path.Combine(file.Directory,file.Name),outex);if(ex!=null){Console.WriteLine(String.Format("{0} x {1} {2}",ex.Width,ex.Height,ex.Orientation));using(varfileStream=fa.GetFile(file)){using(varreader=newSystem.IO.StreamReader(fileStream)){reader.ReadToEnd();// do nothing}}}if(st!=null){st.Dispose();}}}}namespace FlashAirClient;
FlashAirアクセスの出発点になるクラスです。
| メンバ名 | 内容 |
|---|---|
| FlashAir(String baseUrl) | コンストラクタ |
| Command | command.cgi への呼び出し |
| Thumbnail | thumbnail.cgi への呼び出し |
| Config | config.cgi への呼び出し |
| Upload | upload.cgi への呼び出し |
| GetFile( FileInfo file ) | ファイルを System.IO.Stream としてダウンロード |
| GetFile( String path ) | ファイルを System.IO.Stream としてダウンロード |
| 型 | メンバ名 | 内容 |
|---|---|---|
IEnumerable<FileInfo> | FileList( String dir ) | dir(ディレクトリ)内のファイルの一覧 |
| int | FileCount( String dir) | dir(ディレクトリ)内のファイル数取得 |
| その他 | 設定情報などを取得するメソッドまたはプロパティ |
| 型 | メンバ名 | 内容 |
|---|---|---|
| Stream | Get( String path ) | path で指定した画像のサムネイル画像ファイルを Stream として取得 |
| Stream | Get( FileInfo file ) | FileListで取得したFileInfoを引数にして画像のサムネイル画像ファイルを Stream として取得 |
| String | GetUrl( path ) | path で指定した画像のサムネイル画像のURLを取得 |
| String | GetUrl( FileInfo file ) | FileListで取得したFileInfoを引数にして画像のサムネイル画像のURLを取得 |
| ###class Config |
複数の設定を同時に送信できる仕様にのっとり、Configクラスのメンバ(プロパティ)にセットした内容を Submit( String mastercode ) で送信します。
| 型 | メンバ名 | 内容 |
|---|---|---|
| bool | UploadFile() | Streamとfilenameからファイルをアップロード |
| bool | DeleteFile() | ファイルの削除 |
| bool | SetUploadDirectory() | アップロードディレクトリの指定 |
| bool | SetSystemTime() | システムの時刻設定。 |
| bool | SetWriteProtect() |
Command.FileList() でファイルを列挙した際のファイル情報を格納します。
| 型 | 名前 | 内容 |
|---|---|---|
| String | Directory | ディレクトリ |
| String | Name | ファイル名またはディレクトリ名 |
| long | Size | サイズ |
| DateTime | Time | ファイルの日付 |
| FileAttribute | Attributes | ファイルの属性情報のフラグ |
- v3.0.0.3 (2017.7.25) upload.cgi W-04で互換性の問題を修正
- v3.0.0.2 (2017.1.18) upload.cgi で Non-ASCII ファイル名のハンドリング追加
- v3.0.0.1 (2016.10.12) upload.cgi ファイルアップロード時のファイル名の扱いを修正
- v3.0.0.0 リリース (2015.5.28)
MITライセンス (c) Yokinsoft http://www.yo-ki.com