php - 根据多个文件输入检查现有文件名

标签 php javascript jquery ajax

我有一个文件验证过程,它通过 ajax 调用检查文件名是否已在数据库中。如果现有文件名.php 中只有 1 个文件名回显,则此方法有效,但我无法弄清楚如何循环返回数据以根据现有文件名.php 中的每个结果检查多个文件输入中的每个文件名环形。非常感谢任何建议。谢谢

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(fname == data){ 
          alert("these files already exist:" + data); 
          return false;
        }
      }
  });

和'existing-filenames.php'中

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

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

最佳答案

在 PHP 文件中,您只是打印所有文件路径,不带空格或换行。 此外,您还应该为查询使用准备好的语句,包括 $_SESSION['email'] 而不进行任何检查根本不安全。

顺便说一下,尝试像这样编辑你的 PHP 文件:

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

$fileList = array();
while($result = $allfiles ->fetch_assoc()) {
    $fileList[] = $result['filename'];
}

echo json_encode($fileList);

你的 JS 代码是这样的:

$.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) >= 0){ 
          alert("these files already exist:" + data); 
          return false;
        }
      }
  }, 'json');

未经测试,但应该可以工作

关于php - 根据多个文件输入检查现有文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15643038/

相关文章:

javascript - 调用 JavaScript 函数

javascript - 点击网页中其他内容时如何关闭导航栏

php - 如何在 PHP 中以字符串形式显示数据库中表的内容?

php - 使用隐藏字段将数组中的搜索结果重新提交回 MySQL 数据库

javascript - 在 <label> 中找到一个字符并设置类

javascript - AngularJS + simpleCart 问题显示购物车内容直到添加项目

javascript - 批处理 - 将整个控制台输出回显到文本文件(本质上是日志)

php - 确实有时不调用 mysqli_result::free、mysqli_result::close、mysqli_result::free_result 可能更有益吗

javascript - ajax $_POST 数组丢失

jquery - 手动触发jquery keyup?