applican

マイページに戻る

FileTransfer ver.1.0

ローカルのファイルシステム上のファイルをサーバーにHTTPでアップロードする機能、および、サーバー上のファイルをHTTPでダウンロードして、ローカルのファイルシステムにファイルとして保存する機能です。

アプリカンAPIのver.1.0系のFileSystemのFileTransferのリファレンスです

  1. アプリカンAPIのver.2.0系のFileSystemのFileTransferのリファレンスはこちらからご確認ください。

プロパティ

onprogress: Function データチャンクが転送されるたびに呼び出されます。この関数には、引数にProgressEventオブジェクトが渡されます。
  • ファイルのデータが転送されている間に進捗がある都度、何度も呼び出されます。この関数には、引数にProgressEventオブジェクトが渡されますが、ここから転送の進捗を知ることができます。ProgressEventオブジェクトの使い方は、サンプルコードを参照してください。

メソッド

  • upload(fileURL, encodeURI, Function successCallback, Function errorCallback, options, trustAllHosts)
  • download(source, target, Function successCallback, Function errorCallback, trustAllHosts, options)
  • abort()

upload

メソッド説明

upload(fileURL, encodeURI, Function successCallback, Function errorCallback, options, trustAllHosts)

ファイルをアップロードします。アップロード先に同名のファイルが存在する場合は移動先のファイルを削除します。

パラメータ

fileURL アップロードファイルのパスをフルパスで指定します。
encodeURI ファイルを受け取るサーバーのURLを指定します。
successCallback : Function アップロード成功時にMetadataオブジェクトがCallback関数に引数として渡されます。
errorCallback : Function アップロード失敗時にエラーコードを含んだイベントオブジェクトがCallback関数に引数として渡されます。
options オプションのパラメータは以下の通りです。
fileKey: String
アップロードファイルの名前を指定出来ます。デフォルトは [file] となっています。
fileName: String
アップロード先にファイルを保存する際に使用するファイル名を指定出来ます。デフォルトは [image.jpg] となっています。
mimeType: String
アップロードするデータの種類を指定出来ます。デフォルトはJpeg画像 [image/jpeg] となっています。
params: Object
HTTPリクエスト時に使用するパスワードを指定します。キーと値が必ずセットになります。
chunkedMode: Boolean
ストリーミング・モードにおけるデータアップロードの対応設定。デフォルトはture。
headers: Object
ヘッダーの名前、又はヘッダーの値を指定します。複数指定の場合は配列を使用してください。
trustAllHosts : Boolean 自己署名されたセキュリティ証明書を許可するかどうかの設定です。デフォルトは [false] に設定されています。
Androidは自己署名されたセキュリティ証明書を拒否するので、その際に役立ちますが、リリース時には推奨されません。この機能はAndroid・iOSでサポートされています。

サンプルコード

var win = function (r) {
    console.log("Code = " + r.responseCode);
    console.log("Response = " + r.response);
    console.log("Sent = " + r.bytesSent);
}

var fail = function (error) {
    alert("An error has occurred: Code = " + error.code);
    console.log("upload error source " + error.source);
    console.log("upload error target " + error.target);
}

var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
options.mimeType = "text/plain";

var params = {};
params.value1 = "test";
params.value2 = "param";

options.params = params;

var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options);

アップロード・ヘッダーおよび進行イベントを備えた例

function win(r) {
    console.log("Code = " + r.responseCode);
    console.log("Response = " + r.response);
    console.log("Sent = " + r.bytesSent);
}

function fail(error) {
    alert("An error has occurred: Code = " + error.code);
    console.log("upload error source " + error.source);
    console.log("upload error target " + error.target);
}

var uri = encodeURI("http://some.server.com/upload.php");

var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=fileURL.substr(fileURL.lastIndexOf('/')+1);
options.mimeType="text/plain";

var headers={'headerParam':'headerValue'};

options.headers = headers;

var ft = new FileTransfer();
ft.onprogress = function(progressEvent) {
    if (progressEvent.lengthComputable) {
        loadingStatus.setPercentage(progressEvent.loaded / progressEvent.total);
    } else {
        loadingStatus.increment();
    }
};
ft.upload(fileURL, uri, win, fail, options);

FileUploadResult

ファイルアップード成功後にCallback関数に引数として渡されるオブジェクトです。

bytesSent アップロード時にサーバに送信されたバイト数です。
responseCode アップロード時にサーバより渡されたレスポンスコードです。
response : String アップロード時にサーバより渡されたレスポンスです。
headers : Object アップロード時にサーバより渡されたレスポンスヘッダです。
※iOSのみこの機能をサポートしています。

※iOS QuirksはresponseCodeまたはbytesSentをサポートしていません。

download

メソッド説明

download(source, target, Function successCallback, Function errorCallback, trustAllHosts, options)

ファイルをダウンロードします。ダウンロード先に同名のファイルが存在する場合は移動先のファイルを削除します。

パラメータ

source ファイルをダウンロードするサーバのURLを指定します。(encodeURI()によってコード化されます。)
target ダウンロードするファイルURLを指定します。
successCallback : Function ダウンロード成功時にFileEntryオブジェクトがCallback関数に引数として渡されます。
errorCallback : Function ダウンロード失敗時にエラーコードを含んだイベントオブジェクトがCallback関数に引数として渡されます。
trustAllHosts : Boolean 自己署名されたセキュリティ証明書を許可するかどうかの設定です。デフォルトは [false] に設定されています。
Androidは自己署名されたセキュリティ証明書を拒否するので、その際に役立ちますが、リリース時には推奨されません。この機能はAndroid・iOSでサポートされています。
options オプション用のパラメータですが、現在サポートされているのは、リソースへのアクセス件を指定する機能のみです。

サンプルコード

var button_el = null;
var progress_el = null;
var pre_el = null;
var video_el = null;

document.addEventListener("deviceready", function() {
	button_el = document.querySelector("button");
	progress_el = document.querySelector("progress");
	pre_el = document.querySelector("pre");
	video_el = document.querySelector("video");
	// button要素にclickイベントのリスナーをセット
	button_el.addEventListener("click", start, false);
}, false);

// 処理開始(ダウンロードファイルを保存する空のファイルを生成)
function start() {
	button_el.disabled = true;
	pre_el.textContent = "ダウンロード準備中...";
	// ファイルシステムにアクセス
	applican.requestFileSystem(
		LocalFileSystem.PERSISTENT, // 永続的なファイルシステム
		10*1024*1024, // 10MB
		function(fs) { // ファイルシステムへのアクセス成功時のコールバック関数
			// ファイルシステムのルート直下にファイルを生成
			fs.root.getFile(
				"test.mp4",
				{ create: true, exclusive: false },
				function(entry) { // ファイル生成成功時のコールバック関数
					// File URL を取得してダウンロード開始
					downloadStart(entry.toURL());
				},
				function(error) { // ファイル生成失敗時のコールバック関数
					pre_el.textContent = "ファイルの生成に失敗しました (" + error.code + ")";
				}
			);
		},
		function(error) { // ファイルシステムへのアクセス失敗時のコールバック関数
			pre_el.textContent = "ファイルシステムへのアクセスに失敗しました (" + error.code + ")";
		}
	);
}

// ダウンロード開始
function downloadStart(file_url) {
	var download_url = "http://rd.newphoria.com/npp/targets/horizontal/scenes/s06.mp4";
	// FileTransferオブジェクトを生成
	var ft = new FileTransfer();
	// ダウンロードの進捗表示関数を定義
	ft.onprogress = showDownloadProgress;
	// ダウンロード開始
	ft.download(
		encodeURI(download_url), // ダウンロードURL
		file_url,                // ファイルURL
		downloadSuccessCb,       // 成功時のコールバック関数
		downloadErrorCb,         // 失敗時のコールバック関数
		false,
		null
	);
}

// ダウンロードの進捗表示
function showDownloadProgress(event) {
	// progress要素をアップデート
	if(event.lengthComputable) {
		var percent = parseInt(event.loaded * 100 / event.total, 10);
		pre_el.textContent = "ダウンロード中... (" + percent + " %)";
		progress_el.value = percent;
	} else {
		progress_el.removeAttribute("value");
	}
}

// ダウンロード成功時の処理
function downloadSuccessCb(entry) {
	video_el.src = entry.toURL();
	video_el.play();
	pre_el.textContent = "ダウンロードが完了しました。 " + video_el.src;
}

// ダウンロード失敗時の処理
function downloadErrorCb(error) {
	var msg = "";
	switch(error.code) {
		case FileTransferError.FILE_NOT_FOUND_ERR:
			msg = "指定の File URL に関連付けられたファイルエントリが見つかりませんでした。"
		case FileTransferError.INVALID_URL_ERR:
			msg = "指定の File URL が不適切です。";
		case FileTransferError.CONNECTION_ERR:
			msg = "指定の File URL に関連付けられたファイルへのアクセスに失敗しました。";
		case FileTransferError.ABORT_ERR:
			msg = "中止要求のため処理を中止しました。";
		case FileTransferError.NOT_MODIFIED_ERR:
			msg = "指定の File URL に関連付けれたファイルは読み取り専用のため書き込むことができませんでした。";
		default:
			msg = "未知のエラーが発生しました。";
	}
	pre_el.textContent = msg;
}

abort

メソッド説明

abort()

transferメソッドを中止する機能です。コールバックにはFileTransferErrorオブジェクトが渡されます。

サンプルコード

var win = function(r) {
    console.log("Should not be called.");
}

var fail = function(error) {
    // error.code == FileTransferError.ABORT_ERR
    alert("An error has occurred: Code = " + error.code);
    console.log("upload error source " + error.source);
    console.log("upload error target " + error.target);
}

var options = new FileUploadOptions();
options.fileKey="file";
options.fileName="myphoto.jpg";
options.mimeType="image/jpeg";

var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options);
ft.abort();
loading