36432


CSVファイルを選択し、実行ボタンを押下したらCSVファイルのレコード件数チェック処理が行われるようにしたいですがネットで調べても実装方法が分かっていない状態です。10件以上あればエラーのダイアログを表示するようにしたいです。どう修正したらよろしいでしょうか。  
●CSVファイルの中身の例  
no,title,year  
1,てすと,2011  
2,テスト,2012  
3,TEST,2015

[code]

    <!DOCTYPE html>
    <html lang="ja">
    <head>
      <meta charset="utf-8">
      <title>あいうえお商店</title>
    
      <link href="css/bootstrap.min.css" rel="stylesheet">
      <link type="text/css" rel="stylesheet" href="css/bootstrap-timepicker.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
      <script src="js/bootstrap.min.js"></script>
      <script type="text/javascript" src="js/bootstrap-timepicker.min.js"></script>
      <body>
        <p>
          <input type="file" name="datafile" id="file1">
        </p>
        <input type="button" value="実行" id="checkfile"> 
        <script type="text/javascript">
          $("#checkfile").click(function () {
            //Ｆｉｌｅ件数チェック
          });
        </script>
      </body>
      </html>
    
[/code]


CC BY-SA 3.0
2017-07-16T14:37:50.703
36426
2017-07-16T21:05:59.530
17348
question
javascript jquery
JavaScriptのファイルのレコード件数チェック処理について。


HTML5からFILE APIを使用してローカルファイルにアクセスできるようになりました。  
この場合[FileReader](https://developer.mozilla.org/ja/docs/Web/API/FileReader)を使用してファイルの中身をスクリプトにロードします。  
まず、FileReaderオブジェクトを作成し

`var reader = new FileReader();`  
読込が完了(成功した場合`onload`イベントが起きる)した場合のイベントを設定します。  
`reader.onload = function(e) { ... }`

[readAsText](https://developer.mozilla.org/ja/docs/Web/API/FileReader/readAsText)でファイルの読み込みをします。  
`reader.readAsText(file.files[0]);`

読込が完了すると`reader.result`に指定文字コード（エンコードが指定されなかった場合UTF-8）文字列で内容が保存されます。  
ファイルの内容が何行あるかは  
`reader.result.split("\n").length`のようなやり方で調べることができます。  
最後の行には改行がない、最初の行はフィールド名としてカウントしないなど指定行数については調整ください。  
(または別の方法を実装下さい)  
全体的な例は以下の様になります。

[code]

    $("#checkfile").click(function () {
        var file = $("#file1").get(0);//または単に file1 を使用
        if(file.files.length == 0){
            alert("現在ファイルは選択されていません");
        } else {
            var reader = new FileReader();
    
            reader.onload = function(e){
                if(reader.result.split("\n").length >= 10)
                    alert("１０件以上のレコードがあります");
            };
    
            reader.readAsText(file.files[0]);
        }
    });
    
[/code]


CC BY-SA 3.0
2017-07-16T21:00:00.870
36432
2017-07-16T21:05:59.530
2017-07-16T21:05:59.530
5044
5044
36426
answer