Monaca でのファイルの保存先
Monaca で iPad のアプリを作成しています。ファイルをダウンロードするアプリを作成中です。
下記のコードを実機のデバッガで実行すると
ファイルを/path/to/downlardsに保存しました。
とでますが、実際にはどこに保存されているのでしょうか?
また、保存先のファイルを読み込むには? (このアプリはデバッガで動作するのでしょうか?)
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<script src="components/loader.js"></script>
<link rel="stylesheet" href="components/loader.css">
<link rel="stylesheet" href="css/style.css">
<script>
var directoryEntry;
document.addEventListener('deviceready', init, false);
function init() {
window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, getFilesFromDirectory, fail);
// window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, getFilesFromDirectory, fail);
document.getElementById('download').addEventListener('click', downloadFile, false);
}
function getFilesFromDirectory(fileSystem) {
directoryEntry = 'cdvfile://localhost/persistent/path/to/downloads/';
var directoryReader = directoryEntry.createReader();
directoryReader.readEntries(putFileName, fail);
}
function putFileName(entries) {
alert(entries.length);
for ( index = 0; index < entries.length; index++ ) {
alert(entries[index].fullPath);
if ( entries[index].isFile ) {
var listItem = document.createElement('li');
listItem.textContent = entries[index].name;
listItem.title = entries[index].fullPath;
listItem.addEventListener('click', uploadFile, false);
document.getElementById('fileList').appendChild(listItem);
}
}
}
function downloadFile() {
// FileTransferオブジェクトを作成
var fileTransfer = new FileTransfer();
// ダウンロード先のURIをencodeURIでエンコード
var uri = encodeURI('http://image.gihyo.co.jp/assets/templates/gihyojp2007/image/gihyojp_logo.png');
alert(uri);
// 保存するファイルの名前
var fileName = 'gihyojp_logo.png';
// 保存先をフルパスで指定
var path = 'cdvfile://localhost/persistent/path/to/downloads/';
alert(path);
// ファイルのダウンロードを実行
fileTransfer.download(uri, path, downloadSuccess, downloadFail);
}
function downloadSuccess(fileEntry) {
alert('ファイルを' + fileEntry.fullPath + 'に保存しました。');
location.reload();
}
function downloadFail(fileTransferError) {
var error = '';
switch(fileTransferError.code) {
case FileTransferError.FILE_NOT_FOUND_ERR:
error = '第2引数にファイルURLが指定されていません';
break;
case FileTransferError.INVALID_URL_ERR:
error = '不正なファイルパスが第2引数で指定されています';
break;
case FileTransferError.CONNECTION_ERR:
error = '接続エラー';
break;
default:
error = '未定義のエラー';
break;
}
alert(error + '\nhttp_status: ' + fileTransferError.http_status);
}
function uploadFile(event) {
// FileTransferオブジェクトを作成
var fileTransfer = new FileTransfer();
// アップロード先URIをencodeURIでエンコード
var uri = encodeURI('http://(ホスト名)/receive.php');
// FileUploadOptionsオブジェクトを作成し,送信時の情報を指定
var uploadOptions = new FileUploadOptions();
uploadOptions.fileKey = 'file';
uploadOptions.fileName = event.target.textContent;
// ファイルのアップロードを実行
fileTransfer.upload(event.target.title, uri, uploadSuccess, uploadFail, uploadOptions);
}
function uploadSuccess(uploadResult) {
var result;
// アップロード先(receive.php)から返るJSONをパース
if ( 'Android' === device.platform ) {
result = JSON.parse(uploadResult.response);
} else {
// iOSの場合はエンコードされた文字列になるため,decodeURIでデコード
result = JSON.parse(decodeURI(uploadResult.response));
}
if ( 0 === result.errorCode ) {
alert('ファイルのアップロードに成功しました\nbytesSent: ' + uploadResult.bytesSent + '\nresponseCode: ' + uploadResult.responseCode);
} else {
alert('ファイルのアップロードに失敗しました\n' + result.message + '\nbytesSent: ' + uploadResult.bytesSent + '\nresponseCode: ' + uploadResult.responseCode);
}
}
function uploadFail(fileTransferError) {
var error = '';
switch(fileTransferError.code) {
case FileTransferError.FILE_NOT_FOUND_ERR:
error = '第1引数に指定したファイルが見つかりません';
break;
case FileTransferError.INVALID_URL_ERR:
error = '不正なURIが第2引数で指定されています';
break;
case FileTransferError.CONNECTION_ERR:
error = '接続エラー';
break;
default:
error = '未定義のエラー';
break;
}
alert(error + '\nhttp_status: ' + fileTransferError.http_status);
}
function fail(error) {
alert('エラーが発生しました。エラーコード: ' + error.code);
}
</script>
</head>
<body>
<div class="app">
<h1>File API Test</h1>
<p>
<input id="download" type="button" value="download gihyo logo">
</p>
<ul id="fileList"></ul>
</div>
</body>
</html>