dropzone.js发送空$ _FILES

时间:2015-03-19 14:26:58

标签: php file-upload dropzone.js

我尝试使用dropzone.js制作一个拖放文件上传区域,我真的非常绝望。我有这个最简单的脚本:

<?php
  print_r($_FILES);
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
        <meta charset="utf-8">
    </head>
    <body>
        <form action="/" method="POST" enctype="multipart/form-data" class="dropzone">
            <input name="file" type="file" />
            <input type="submit" name="submit" value="Submit" />
        </form>
        <script type='text/javascript' src="dropzone.js"></script>
    </body>
</html>

当我使用文件输入按钮手动选择文件时,我得到了这个结果:

Array ( [file] => Array ( [name] => test.txt [type] => text/plain [tmp_name] => C:\wamp\tmp\php4DFF.tmp [error] => 0 [size] => 247 ) )

但是,当我使用dropzone拖放时,文件显示为已上传,但提交后我得到了这个:

Array ( [file] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )

也称为 UPLOAD_ERR_NO_FILE 值:4;没有上传文件。

我在这里错过了什么吗?

我尝试使用 autoProcessQueue:false autoDiscover:false ,自动表单提交,不同脚本,不同服务器(apache / nginx)等设置,但绝对没有似乎对我有用。我现在正在监督一些愚蠢的事情。

我使用dropzone.js v4.0.1,但我也尝试过旧版本。

2 个答案:

答案 0 :(得分:2)

你不应该使用drop zone提交(点击提交按钮),它会异步工作,所以一旦你删除文件,它就会点击你的php上传脚本,而不需要做任何其他事情。 一旦你点击提交,它将是第二次,你重新提交表单,它将显示为空。

你应该把你的php放在一个单独的页面上,而不是提交给自己。提交后,您将无法在浏览器中查看此帖子,因为它是ajax和async,但您可以使用chrome的开发工具来查看帖子至少。

答案 1 :(得分:0)

同样的事情发生在我身上,当我的文件大于我的 php.ini 文件中的配置最大值 (upload_max_filesize) 时。

您可能想要检查的其他设置:

  • upload_max_filesize
  • post_max_size
  • max_input_time
  • max_execution_time