

Monaca で iPad のアプリを作成しています。ファイルをダウンロードするアプリを作成中です。

下記のコードを実機のデバッガで実行すると

[code]

    ファイルを/path/to/downlardsに保存しました。
    
[/code]

とでますが、実際にはどこに保存されているのでしょうか？

また、保存先のファイルを読み込むには？ （このアプリはデバッガで動作するのでしょうか？）

[code]

    <!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>
    
[/code]


CC BY-SA 3.0
2015-02-12T03:09:36.443
6352
2015-02-12T09:13:04.860
2015-02-12T03:27:57.510
4978
8234
question
ios monaca
Monaca でのファイルの保存先


ファイルの保存先について回答します。

`cdvfile://localhost/persistent` はアプリ固有のデータフォルダを指すみたいです。

[Monaca
Docs::ファイルプラグイン](http://docs.monaca.mobi/3.5/ja/reference/phonegap_34/ja/file/)  
↑の「iOS のファイルの永続的な保存場所 ( Persistent Storage )」参照。

`config.ios.xml` に以下の定義を追加していない場合は、`{アプリ固有フォルダ}/Documents` だと思います。

[code]

    // config.ios.xml
    <preference name="iosPersistentFileLocation" value="Library" />
    
[/code]

i-FunBoxをインストールしておくと、アプリ固有フォルダへのアクセスが楽ちんですよ。


CC BY-SA 3.0
2015-02-12T09:13:04.860
6378
2015-02-12T09:13:04.860
8232
6352
answer