2016-07-26 11 views
-1

ドラッグアンドドロップでCSVファイルをアップロードしようとしましたが、Excelファイルのようにアップロードしたときに警告メッセージが表示されません。私は間違って何をしていますか?文字列の最後の数文字を確認する

私は以下の関数を呼び出します。実際にはCSVファイルをアップロードするかどうかを確認する必要があります。その後、ファイル拡張子を確認した後、ファイルを読み込んで、この(CSV)ファイルにあるデータでテーブルを埋めます。そのため、CSVとは別のアップロードタイプがないことが重要です。

if (!file.name.endsWith == ".csv") { 

あなたはこれをしたい:あなたは、これは持っている

function handleFileSelection(evt) { 
    evt.stopPropagation(); // Do not allow the drop event to bubble. 
    evt.preventDefault(); // Prevent default drop event behavior. 

    var files = evt.dataTransfer.files; // Grab the list of files dragged to the drop box. 

    if (!files) { 
     alert("<p>At least one selected file is invalid - do not select any folders.</p><p>Please reselect and try again.</p>"); 
     return; 
    } 

    // "files" is a FileList of file objects. Try to display the contents of each file: 
    for (var i = 0, file; file = files[i]; i++) { 
     if (!file) { 
      alert("Unable to access " + file.name); 
      continue; // Immediately move to the next file object. 
     } 
     if (file.size == 0) { 
      alert("Skipping " + file.name.toUpperCase() + " because it is empty."); 
      continue; 
     } 
     if (!file.name.endsWith == ".csv") { 
      alert("Skipping " + file.name.toUpperCase() + " because it is not a known text file type."); 
      continue; 
     } 
     startFileRead(file); // Asychronously fire off a file read request. 
    } 
} 
+0

文脈とコードをさらに指定してください。このコードをどこで呼びますか?ファイル配列はどこに定義されていますか? – trincot

答えて

0

問題は、この行を次のとおりです。

if (!file.name.endsWith == ".csv") { 

プロパティの否定を ".csv"と比較していますが、おそらくthe function with that nameを実行したかったのです。

あなたはこの代替との方が良いでしょうので、しかし、その機能は、すべてのブラウザでは使用できません。

if (file.name.search(/\.csv$/) === -1) { 

最初ifブロック内備考

コードが実行されることはありません!fileは常にfalseと評価されるためです。これは、ループ(中式:file = files[i])のループ条件が、fileが偽になるたびにループを終了させるためです。

+0

ありがとう、それは動作します! ファイルのエンコーディングをチェックする方法があるかどうか知っていますか?私のファイルは "UTF-8"でなければならないとしましょう。ありがとうございました! –

+0

よろしくお願いいたします。エンコーディングについて:これは本当に別の質問です。私はそれがどうやって自分でできるのか分かりません。新しい質問として投稿してもらえますか?そうすれば、他の人たちもまたそれを見るように引き付けるでしょう。 – trincot

-2

:ここ

はコードである

if (!file.name.endsWith(".csv")) { 
+0

動作しません。あなたの例で私が好きなら、私のCSVファイルはまったくアップロードされません。 –

関連する問題