API紹介の最終回となる今回は,FileTransferオブジェクトを使って,ファイルのダウンロード・アップロードを行う手順を紹介していきます。性質上,Webサーバとファイルを受信するプログラムが別途必要になりますのであらかじめご準備ください。FileTransferオブジェクトを使ったファイルダウンロード・アップロードFileTransferオブジェクトを使用して,ファイルをダウンロード・アップロードするアプリケーションを作成してみましょう。新たに登場するオブジェクトとメソッドは次のとおりです。FileUploadResultオブジェクトとは選択したファイルを外部サーバに送信するサンプルプログラムを紹介する前に,ファイル転送に関係する4種類のオブジェクトについて確認しておきましょう。公式ドキュメントに一部誤っていると思われる表記があるため,ソースコードから動作を書き起こしています。Documentationと差異がある箇所があります。FileTransferオブジェクトは,サーバからファイルをダウンロード,またはファイルをサーバにアップロードする際に使用するオブジェクトです。FileTransferオブジェクトにプロパティはありません。用意されているメソッドは次のとおりです(使い方のfileTransferは,FileTransferオブジェクトを指します⁠)⁠。指定したサーバからファイルをダウンロードします。ダウンロードしたいファイルのURLをsourceに指定します。encodeURI()メソッドでエンコードされている必要があります。ファイルの保存先をtargetにフルパス表記で指定します。targetに存在しないディレクトリを指定した場合は,ダウンロード成功時に自動的に作成されます。ダウンロードしたいファイルのホストを,あらかじめホワイトリストに定義しておく必要があります。成功時,successCallbackに,取得したファイルの情報をFileEntryオブジェクトして渡します。失敗時,errorCallbackに,FileTransferErrorオブジェクトを渡します。指定したサーバにファイルをアップロードします。アップロードしたいファイルのフルパスをfilePathに指定します。ファイルの送信先URLをserverに指定します。encodeURI()メソッドでエンコードされている必要があります。ファイル名やMIME,パラメータなどの情報をFileUploadOptionsオブジェクトとして定義し,optionsに指定します。すべてのホスト(自己署名の証明書を使用しているホストなど)を信頼する場合は,trustAllHostsにtrueを指定します。デフォルト値はfalseです(執筆時点で,この指定は無視される模様です)成功時,successCallbackに,FileUploadResultオブジェクトして渡します。失敗時,errorCallbackに,FileTransferErrorオブジェクトを渡します。trustAllHosts);FileTransferErrorオブジェクトは,FileTransferオブジェクトでダウンロードまたはアップロードの際にエラーが発生した際に渡されるエラーオブジェクトです。メソッドはありません。FileTransferErrorオブジェクトのプロパティは次のとおりです。code対応するエラーコードを返しますsourceソースのURIを返しますtargetターゲットのURIを返しますhttp_statusHTTPステータスコードを返します(レスポンスコードがHTTP接続から返されたときのみ有効です)対応する定数とエラーコードは次のとおりです。filePath);}FileTransferオブジェクトのcodeプロパティと,http_statusプロパティは連動していません。サーバ側で404エラーが返るURLをdownloadメソッドで指定した場合,codeプロパティはFileTransferError.FILE_NOT_FOUND_ERRではなくFileTransferError.CONNECTION_ERRを,http_statusは404の値を取ります。若干分かりづらいので,ご自身の手で後述のサンプルをカスタマイズし,エラーの値を確認してみてください。FileUploadOptionsは,FileTransferオブジェクトのuploadメソッド時に指定するオプションをまとめたオブジェクトです。メソッドはありません。FileUploadOptionsのプロパティは次のとおりです。fileKeyContent-Dispositionヘッダのname属性に指定する名前を指定します。デフォルト値はnullですfileNameContent-Dispositionヘッダのfilename属性に指定する名前を指定します。デフォルト値はnullですmimeTypeContent-Typeヘッダに指定するMIMEタイプを指定します。デフォルト値はnullです。指定しなかった場合,Content-Typeヘッダは送信されませんparamsHTTPリクエストに含めたいデータをkey/value形式で指定しますchunkedModeチャンク・ストリーミングでファイルを送信したい場合はtrueを指定します(執筆時点で,この指定は無視される模様です)FileUploadOptionsの初期値を確認(iOS)FileUploadOptionsの初期値を確認(Android)FileUploadResultオブジェクトは,FileTransferオブジェクトのuploadメソッドでファイルアップロードに成功した場合に渡されるオブジェクトです。メソッドはありません。FileUploadResultオブジェクトのプロパティは次のとおりです。bytesSent送信されたバイト数を示しますresponseCodeサーバから返されたHTTPレスポンスコードを示しますresponseサーバから返されたHTTPレスポンスを示しますiOSの場合,responseにはstringByAddingPercentEscapesUsingEncodingでエンコードされた文字列が格納されます。JSONをやりとりするアプリケーションを作成する場合,そのままではJSON.parseが動作しないので注意しましょう。Androidの場合,エンコードは行われません。2.1.0では,ファイル転送に関係するオブジェクトにおいてFileWriterオブジェクトやFileReaderオブジェクトにあるような「ファイルのダウン/アップロード中」や「ファイルの送信を中止させる」に相当するイベント・メソッドが用意されていません。そのため,ダウンロード・アップロードの進捗率を画面に表示するといったことは難しいでしょう。2.2.0にてサポートされる予定です。monitoringをチェックしておきましょう。ファイル転送に関係するオブジェクトをまとめると,次のようになります。ファイルのダウンロード・アップロードを行う。Android著者プロフィール富田宏昭(とみだひろあき)株式会社キクミミでFileMaker/SQLiteを使ったWebアプリ開発に従事しながら,オープンソースソフトウェアのハウツー記事執筆を行う。趣味は横乗り系スポーツ,美術館めぐり,高速ジャンクション鑑賞。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。