Monacaで、アプリ(iPad用)を作成しています。
その中で、ファイルをサーバからダウンロードし、iPad内に登録する機能を設けています。
ファイルは、カンマ区切りのCSVファイルで、UTF-8、改行コードLF、サイズが15MB程度(もっと大きくなる予定)です。
ダウンロードするファイルのサイズが大きい時に、読み込みでエラーが発生し、困っております。
###該当のソースコード(抜粋)
// データファイルダウンロード var fileTransfer = new FileTransfer(); fileTransfer.download( uriData, // ファイルをダウンロードするURL fileURLData, // function (downloadFile) { downloadFile.file( function(file){ var reader = new FileReader(); reader.onload = function() { console.log("読み込み成功_onload"); // 読み込み成功時の処理 importDownloadFile(this.result); }; reader.onerror = function(){ console.log("読み込み失敗_onerror:" + reader.error.code); }; reader.readAsText(file); }, function(error){ console.log("readFileData download : " + error.message); } ); }, function (error) { console.log("download error message : " + error.message); }, false, // { // } ); // 読み込み成功時の処理 function importDownloadFile(str) { // 改行を区切りとして、行データの配列を生成する var list = str.split("\n"); var result = []; for ( var i = 0; i < list.length; ++i){ // 行ごとに、カンマ区切りの配列に変換する result[i] = list[i].split(','); // 読み込み後の処理 console.log("1つ目:" + result[i][0]); console.log("2つ目:" + result[i][1]); console.log("3つ目:" + result[i][2]); } }
これを実行すると、
**「読み込み失敗_onerror:5」**がログに出力されます。(他のところではエラーはでません)
ネット上を調べたところ、
FileReaderのエラーコードが5のとき、ENCODING_ERRとのことで、
「サイズ制限がオーバーしている」または「エンコードに失敗している」との記載がありました。
試しに、小さいサイズ(14KB程度)のファイルを用意したところ、正常に読み込めますが、
大きいサイズ(15MB程度)のファイルはエラーとなることはわかっています。
また、小さいサイズのファイル内容をエラーになるサイズになるまでコピーしたファイルを用意して
試してみたところ、同じ個所でエラーとなりました。
なので、「エンコードで失敗」とは考えにくいと思っております。
そもそもFileReaderを使った時、読み込めるファイルのサイズ制限があるのでしょうか?
探してみたのですが、見つけられませんでした。
サイズ制限があるとして、その制限を解除、または上限を設定する方法はありますでしょうか?
なお、業務アプリのため、ダウンロードするファイルを分割することはできませんが、
やはりサイズを小さくする方法しかないのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。