0

複数のファイル入力の選択されたファイル名がデータベースに既に存在するかどうかを確認するこの ajax 呼び出しがあります。もしそうなら、それは彼らに知らせるメッセージを警告します. 問題は、結果ループからすべてのファイル名を警告することしかできないことです。選択されたファイル名のみを警告するように編集するにはどうすればよいですか? ありがとう。

var file = $('#file')[0];
$.get('existing-filenames.php', function(data){

   for (var i=0; i<file.files.length; i++) {
   var fname = file.files[i].name;

   if(~data.indexOf(fname)){ 
    // only alert selected file names
    alert("these files already exist:" + data); 
     return false;
    }
  }
},'json');

および existing-filenames.php で

$allfiles = $db->query("SELECT filename FROM files WHERE email = '$_SESSION[email]'");

$result = [];
while( $files = $allfiles ->fetch_assoc() ){
       $result[] = $files['filename'];
   }
       echo json_encode($result);

とhtml

<input name = "file[]" type = "file" id = "file" multiple />
4

3 に答える 3

1

疑わしい場合は、さらに jQuery を追加します。

$('#file').on('change', function () {
    var self = this;
    $.get('existing-filenames.php', function (data) {
        $.each(self.files, function () {
            if (data.indexOf(this.name) != -1) {
                alert("these files already exist:" + this.name);
            }
        });
    });
});
于 2013-03-26T20:49:58.353 に答える
0

データの代わりに fname を警告すべきではありませんか?

方法は次のとおりです。

myfiles = '';

for(var i = 0; i < file.files.length; i++)
{
     if(~data.indexOf(fname)){
          myfiles += fname;
     }
}

if(myfiles !== ''){
     alert("these files already exist:" + myfiles);
}

それは理にかなっていますか?追加したファイルの実行中の文字列を保持し、最後にすべてのファイルに警告します。それらの間にコンマ、スペース、または必要なものを追加できます。

于 2013-03-26T20:44:50.720 に答える
0

fname代わりに警告dataして削除するreturn false;

   if(~data.indexOf(fname)){ 
     // only alert selected file names
     alert("these files already exist:" + fname); 
    }
于 2013-03-26T20:45:08.307 に答える