質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

10935閲覧

ファイルの読み込みサイズ制限について

lucky-ponta

総合スコア74

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2017/07/13 01:20

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を使った時、読み込めるファイルのサイズ制限があるのでしょうか?
探してみたのですが、見つけられませんでした。

サイズ制限があるとして、その制限を解除、または上限を設定する方法はありますでしょうか?

なお、業務アプリのため、ダウンロードするファイルを分割することはできませんが、
やはりサイズを小さくする方法しかないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

大きいサイズのファイルも読み込めた、という意味で、自己解決しました。
(プログラム自体をあまり理解していないのですが・・・)

// データファイルダウンロード var fileTransfer = new FileTransfer(); fileTransfer.download( uriData, fileURLData, function (downloadFile) { downloadFile.file( function(file){ // --------------------ここから $(function () { $.ajax({ url:downloadFile.toURL(), // ダウンロードしたファイルの実際の場所 success: function(data){ // 読み込み成功時の処理 importDownloadFile(data); } }); }); // --------------------ここまで /** ダメだったやつ 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, // { // } );

修正後、サイズを30MBにしたファイルを用意して確認しましたが、正常に読み込めましたことも
併せてご報告します。
※ファイルサイズの制限については、調べきれていません・・・。

なお、プログラム自体は独学なため、これよりももっといい方法・記述の仕方がありましたら、
コメントくださると嬉しいです。

投稿2017/07/13 06:12

編集2017/07/13 06:17
lucky-ponta

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問