cordova-plugin-file-transfer でファイルをアップロードする
cordova-plugin-file-transfer を使うと、Cordova アプリ内の任意のファイルをサーバに向けてアップロードすることができる。
まずはプラグインをインストールする。
$ cordova plugin add cordova-plugin-file-transfer
cordova-plugin-file がインストールされていなければこちらも同時にインストールされるはず。
次に、以下のようにしてファイルの送信処理を作成する。
// cordova-plugin-file を入れると使えるようになる File URL へのエイリアスを利用し、送信したいファイルを特定する
const fileUrl = window.cordova.file.tempDirectory + 'Test.txt';
// 送信先サーバの URL
const url = encodeURI('http://example.com/upload.php');
// オプションを作成する
const options = new FileUploadOptions();
options.fileKey = 'file'; // ファイルのキー (通常は 'file' で良い)
options.fileName = 'Test.txt'; // ファイル名
options.mimeType = 'text/plain'; // MIME Type
options.httpMethod = 'POST'; // 送信するメソッド
options.chunkedMode = true; // チャンクストリームモード
// パラメータ
options.params = {
value1: 'Test Value',
value2: 'Example Value'
};
// ヘッダ
options.headers = {
'headerParam': 'headerValue'
};
// ファイルを送信する
const fileTransfer = new FileTransfer();
fileTransfer.upload(fileUrl, url, function(result) {
console.log(`送信成功 : ${result.responseCode}・${result.bytesSent}・${result.response}`);
}, function(error) {
console.log(`送信失敗 : ${error.code}・${error.source}・${error.target}`);
}, options, true);
FileTransfer#upload()
の第5引数の boolean
値は trustAllHosts
オプション。true
にすると全ての証明書を許可する (iOS のみ)。
ちなみにこのプラグインには download()
メソッドもある。
// 保存先となるファイルパスを作る
const fileUrl = window.cordova.file.tempDirectory + 'Test.txt';
// ファイルのダウンロード先 URL
const url = encodeURI('http://example.com/download.php');
const fileTransfer = new FileTransfer();
fileTransfer.download(url, fileUrl, function(entry) {
console.log(`受信成功 : ${entry.toURL()}`);
}, function(error) {
console.log(`受信失敗 : ${error.code}・${error.source}・${error.target}`);
}, true, {
headers: {
'authorization': 'authorization result'
}
});
FileTransfer#download()
の第5引数の boolean
値は trustAllHosts
オプション。第6引数は options
を指定できる場所だが、ダウンロードの場合は HTTP ヘッダ (headers
) しか指定できない。
ひとまずこんな感じ。パラメータや HTTP ヘッダを任意で付与でき、サクッとアップロード機能が作れるので良い感じ。