1

ローカル ファイル システムから csv ファイルを選択し、jquery を使用してそのファイルの内容をテキストとして表示する必要があります。

これをファイルのアップロードに使用しています

<input id = "uploadCSV" type = "file" /> 

その変更イベントで、

 $('#uploadCSV').change(function(e) {
 if(e.target.files != undefined) {
           var reader = new FileReader(); 
           reader.onload = function(e) {
           var lineSplit = e.target.result.split("\n");
           var commaSplit = lineSplit[0].split(",");
           var content = "";
           for(var i = 0; i < commaSplit.length; i++) {
                 var temp = commaSplit[i];
                 content = content + " " + temp;
           }
         };
         reader.readAsText(e.target.files.item(0));
         var fileContent = reader.result;
         alert(fileContent);
      }
 });

どういうわけかこれは機能せず、Firefox を使用するとアラートで null が表示されます。IE8 を使用すると、e.target.result が見つからないためクラッシュします。お知らせ下さい

ローカル ファイル システムの csv ファイルをプレーン テキストに変換する最も簡単な方法を探しています。

ありがとう

4

3 に答える 3

1

onloadイベントハンドラーを使用してreader.resultにアラートを送信しています。これを機能させるには、イベントハンドラー内でアラートを移動する必要があります。

現在行っていることは、ファイルがロードされる前にreader.resultに警告します。その時点で、結果はnullになります。

FileReaderがサポートされていない場合のエラーを回避するには、if (window.FileReader) 使用する前にチェックを行ってください。

次のように変更します。

if ((window.FileReader) && (e.target.files != undefined)) {
  var reader = new FileReader(); 
  reader.onload = function(e) {
    var lineSplit = e.target.result.split("\n");
    var commaSplit = lineSplit[0].split(",");
    var content = "";
    for(var i = 0; i < commaSplit.length; i++) {
      var temp = commaSplit[i];
      content = content + " " + temp;
    }
    var fileContent = reader.result;
    alert(fileContent);
  };

  reader.readAsText(e.target.files.item(0));    
}
于 2013-01-04T15:09:07.573 に答える
0

asp.netmvcを使用して問題を解決できました。詳細は以下をご覧ください

@using(Html.BeginForm("ProcessCsv","<YourControllerName>",FormMethod.Post, new {enctype = multipart/form-data" }))
{
     <input id = "myUpload" type = "file" name = "fileBaseParam"/>
     <input id = "btnSubmit" type = "submit" name = "ProcessCsv" value = "Submit" />
}

コントローラで、actionresultを定義します。

[HttpPost]
public ActionResult ProcessCsv(HttpPostedFileBase fileBaseParam)
{
       var csvReader = new StreamReader(fileBaseParam.InputStream);
       string fileContent = csvReader.ReadToEnd();
}

HttpPostedFileBaseは、ここでの重要な概念です。これに関する詳細については、 http://www.codeproject.com/Articles/442515/Uploading-and-returning-files-in-ASP-NET-MVCを参照してください。

この情報が将来誰かに役立つことを願っています。

ありがとう

于 2013-01-05T19:42:57.810 に答える
0

FileReader は IE<10 ではサポートされていません (https://developer.mozilla.org/en-US/docs/DOM/FileReader -- 下部の「ブラウザ サポート」を参照)。ソリューションが IE8 をターゲットにしている場合、Javascript でやろうとしていることを行う方法はありません。Flash などの組み込みアプリケーションを使用するか、ファイルをサーバーにポストして結果を返す必要があります。

于 2013-01-04T15:04:59.553 に答える