0

我正在使用 thid 代码,这基本上可以帮助我获取用户在浏览器上放置的文件,然后将其发布到 php 并回显文件名,但是当我删除 2 个文件并调用 php 文件并尝试时,问题出在 php 中的数组回显文件数,它总是给我 5 个,它会回显 2 个文件名和 + 其他作为未定义索引....如果我上传 5 个文件,它会显示所有 5 个文件没有问题....请帮助我这是为什么快乐...

这是我的jQuery代码:

function handleFiles(droppedFiles) {
  var uploadFormData = new FormData($("#yourregularuploadformId")[0]);
  if(droppedFiles.length > 0) {
    // checks if any files were dropped
    for(var f = 0; f < droppedFiles.length; f++) {
      // for-loop for each file dropped
      alert(droppedFiles[f]['name']);
      uploadFormData.append("files[]",droppedFiles[f]);
      // adding every file to the form so you could upload multiple files
    }
  }

 // the final ajax call
 alert(uploadFormData);
 $.ajax({
   url : "try.php?size="+s, // use your target
   type : "POST",
   data : uploadFormData,
   cache : false,
   contentType : false,
   processData : false,
   success : function(ret) {
     alert(ret);
   }
  });
  return false;
}

这是我的php代码:

if(isset($_FILES["files"])) {
  for ($i=0;$i<count($_FILES['files']);$i++) {
    echo $_FILES['files']['name'][$i];
    echo "\n";
  }
}
4

1 回答 1

0

这种方式行不通。$_FILES是一个包含上传文件的关联数组,由字段名称索引。每个条目正好有五个元素:nametmp_namesize和。这些元素中的每一个都是一个数组,其中包含与上传文件一样多的元素。typeerror

因此,如果您count($_FILES['files']),结果将始终为 5。但如果您count($_FILES['files'][$xyz])在哪里$xyz是上述任何键,则将是上传文件的数量。

所以你的代码会像这样工作,例如:

if(isset($_FILES["files"]))
  {
  for ($i=0;$i<count($_FILES['files']['name']);$i++) 
    {
    echo $_FILES['files']['name'][$i];
    echo "\n";
    }
  }

或者更好(为了可读性,如果没有别的):

if(isset($_FILES["files"]))
  {
  $filenames=$_FILES['files']['name'];
  for ($i=0;$i<count($filenames);$i++) 
    {
    echo $filenames[$i];
    echo "\n";
    }
  }
于 2013-10-13T10:41:01.780 回答