今回、仕事で画像のアップロード機能を持ったサイトを作ることになりました。
でも、作ってみると意外と大変でした…。
#Cordovaでファイルアップロードを作る上であった問題点
・ファイルのアップロードには$cordovaFileTransferが使えない(←デプロイしようとするとcordovaFileに統合されたと書いてあるがレファレンスにも乗っていない
・そもそもcordovaFileで取得できるのはファイルパスだけ(FileやBlobではない)
・FileやBlobにするにはJavascriptでFileReaderを起動しなくてはいけないが、なぜかIonic1では動かなかった
#解決方法
・ファイルの取得にはcordovaFileではなくcordovaCameraを使用する(※CordovaCameraのソースとしてCamera以外にphotoalbumを選択できるので、ローカルの写真をアップロードするならこれでOK)
・CordovaCameraのコールバックオプションをDataURLにする。
・DataURLにしたものをPHPのエンドポイントに向けて投げる。
#laravel側での問題点
・どうにかしてDataURLをデコードして保存したい。
#decodeの時に気をつけること
・”data:image/jpeg;64base,”で始まるが最初のこの文字列はデコード対象に入れてはいけない。
※ちなみに、”data…”の文字列を含めた形でブラウザのアドレスバーにそのまま貼り付けると、画像がブラウザに表示されます。つまり、データとしては"data…"の部分がないと成り立たない。