2

我不知道为什么我打印出来时总是得到一个空的 $_FILES 全局数组。我一直在看它,但我看不出我哪里出错了。因此,我已经显示了所有代码。如果我使用它到达服务器就好了,一切正常的按钮。但是如果我使用拖放操作,那么我在服务器上没有文件?知道为什么吗?当我打印数组时,它是数组(0)。

我发现了 while 循环的一个问题,我现在修复了它仍然没有文件。以防人们想知道发布操作是否正确。使用 mod_rewrite 重写 url。它显示正确的 php 页面,所以我假设页面已到达。mod_rewrite 会影响文件的上传。我不这么认为……?

    <!DOCTYPE html>
<html>
      <head>
            <title>Music Upload</title>
            <style>
                  #zone
                  {
                        height:300px;
                        width:500px;
                        border:1px solid black;
                  }
            </style>
      </head>
      <body>
            <div id="zone">
            <legend>Drop a file here&hellip;</legend>
            <p>Or click button to <em>Browse</em>&hellip;</p>
            </div>
            <form action="../receive/" method="POST" enctype="multipart/form-data">
                <input type="file" name="file[]" multiple />
                <input type="submit" value="submit" />
            </form>


            <script>
                  function dragover(event)
                  {
                        event.preventDefault();
                        console.log("drag event");
                        return false;
                  };
                  function dragend(event)
                  {
                        event.preventDefault();
                        console.log("drag end event");
                        return false;
                  };
                  function drop(event)
                  {
                        console.log("Files droped");
                        event.preventDefault();
                        var files=event.dataTransfer.files;
                        fileupload(files);

                  };

                  function isMp3(file)
                  {
                        console.log("Check if mp3 file");
                        mimeTypes=['audio/mpeg','audio/mp3','audio/x-mpeg-3'];
                        for(var i=0;i<mimeTypes.length;i++)
                        {
                              if(file.type==mimeTypes[i])
                              {
                                    return true;
                              };
                        };
                        return false;
                  };

                  function fileupload(files)
                  {
                        if(files.length>0)
                        {

                              var formData= new FormData();
                              var i=0;
                              while(i<files.length)
                              {
                                    var file= files.item(i);

                                    if(isMp3(file)){
                                          formData.append('file[]',files[i++]);
                                          console.log('valid mp3');
                                    }
                              }
                              var xhr = new XMLHttpRequest();
                              xhr.open('POST','/mymusic/receive',true);
                              xhr.onload=function()
                              {
                                    if(this.status==200)
                                    {
                                          console.log('data sent');
                                          console.log(this.responseText);

                                    }else
                                    {
                                          console.log('data failed');
                                    }
                              };
                              xhr.upload.onprogress=function(event)
                              {
                                    if(event.lengthComputable)
                                    {
                                          var complete=Math.round(event.loaded*100/event.total);
                                          console.log(complete+"%");
                                    }
                              };
                              xhr.send(formData);
                        }
                  };

                  var dropArea=document.getElementById("zone");
                  dropArea.addEventListener("dragover",dragover,false);
                  dropArea.addEventListener("dragend",dragend,false);
                  dropArea.addEventListener("drop",drop,false);
                  console.log('script loaded');
            </script>
      </body>
</html>
<?php exit();?>

这是服务器文件。这并不重要,只是以防万一

<?php

echo "server reached\n";
  var_dump($_POST);
  var_dump($_FILES);
  exit();
?>
4

1 回答 1

4

在没有 的情况下尝试rewrite,这很可能是问题所在。

于 2013-05-14T15:36:56.930 回答