Javascript Ajax:如何使用FormData和jQuery发送“空”文件,并将其放入$\u文件中

Javascript Ajax:如何使用FormData和jQuery发送“空”文件,并将其放入$\u文件中,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我有html表单,希望使用Ajax和jQuery发送文件“myfile”: <form method="post" enctype="multipart/form-data"> <input type="file" name="myfile" id="myfile"> </form> 选择文件后,所有操作都可以正常工作。我在服务器$\u文件中有全局数组和通过Ajax获得的数据: ["myfile"]=> array(5) {

我有html表单,希望使用Ajax和jQuery发送文件“myfile”:

<form method="post" enctype="multipart/form-data">
    <input type="file" name="myfile" id="myfile">
</form>
选择文件后,所有操作都可以正常工作。我在服务器$\u文件中有全局数组和通过Ajax获得的数据:

["myfile"]=>
    array(5) {
        ["name"]=>
        string(13) "file_name.jpg"
        ["type"]=>
        string(10) "image/jpeg"
        ["tmp_name"]=>
        string(14) "/tmp/phpefJlk3"
        ["error"]=>
        int(0)
        ["size"]=>
        int(344100)
    }
未选择文件时出现的问题! 当我没有选择任何文件并发送Ajax请求时,我有空的$\u文件,但我有$\u POST,字段“myfile”等于“undefined”。但我需要$\u文件中的“myfile”字段,即使它是空的。我想要像这样的东西:

["myfile"]=>
    array(5) {
        ["name"]=>
        string(0) ""
        ["type"]=>
        string(0) ""
        ["tmp_name"]=>
        string(0) ""
        ["error"]=>
        int(4)
        ["size"]=>
        int(0)
    }

如果我在没有Ajax的情况下发送空表单,则上面是$\u FILES globall数组中的内容。如果我使用Ajax,我也希望如此。可能吗?

您可以检查$\u文件['myfile']['error']和$\u文件['myfile']['size']并返回您选择的数组作为结果。如果$\u FILES['myfile']['error']等于零,则不存在错误。您可以找到有关php.net的更多详细信息,使用AJAX处理文件并不是那么简单。由于不同的客户、hugh文件和所有这些东西,它会出现很多问题。正如您在这里的简单错误中所看到的那样=在您的案例中,没有选择任何文件,因此不需要发送关于任何给定文件的信息。不要产生间接费用。也许你可以看看你的控制器。如果数据是不同的AJAXPOST或POST,那么创建两个PHP操作。一个AJAX处理程序和一个POST处理程序。在这种情况下,您可以处理不同的post数据

此信息将帮助您:


你需要使用插件,如,或使之工作。只需阅读更多关于AJAX和Filepost的内容。

我不需要在服务器中执行任何操作。使用ajax发送“空文件”时,我的$\文件是空数组。但我需要$u文件中的信息。问题只存在于FormData和Ajax中。感谢您的参考。但是我的任务很简单,我不想使用插件来完成这么简单的任务。用AJAX处理文件并不是那么简单。由于不同的客户、hugh文件和所有这些东西,它会出现很多问题。正如您在这里的简单错误中所看到的那样=在您的案例中,没有选择任何文件,因此不需要发送关于任何给定文件的信息。不要产生间接费用。也许你可以看看你的控制器。如果数据是不同的AJAXPOST或POST,那么创建两个PHP操作。一个AJAX处理程序和一个POST处理程序。在这种情况下,您可以处理不同的post数据。干杯,谢谢你的建议。我认为最好不要发送没有给定文件的信息。
["myfile"]=>
    array(5) {
        ["name"]=>
        string(0) ""
        ["type"]=>
        string(0) ""
        ["tmp_name"]=>
        string(0) ""
        ["error"]=>
        int(4)
        ["size"]=>
        int(0)
    }