gpt4 book ai didi

javascript - Ajax:如何使用 FormData 和 jQuery 发送 'empty' 文件并在 $_FILES 中获取它

转载 作者:行者123 更新时间:2023-11-28 08:40:15 24 4
gpt4 key购买 nike

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

<form method="post" enctype="multipart/form-data">
<input type="file" name="myfile" id="myfile">
</form>

我的 JavaScript 代码:

function getFile(fieldName){
var itemValue = $('input[name="' + fieldName + '"]')[0].files[0];
return itemValue;
}

function sendFile(){
var formaData = new FormData();
var itemName = 'myfile';
var itemValue = getFile(itemName);
formaData.append(itemName, itemValue);
$.ajax({
type: 'POST',
data: formaData,
processData: false,
contentType: false,
});
}

选择文件后一切正常。我在服务器 $_FILES 全局数组和其中通过 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 请求时,我有空的 $_FILES,但我有 $_POST,字段“myfile”等于“未定义”。但我需要 $_FILES 中的“myfile”字段,即使它是空的。我想要这样的东西:

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

如果我不使用 Ajax 发送空表单,上面就是 $_FILES 全局数组中的内容。如果我使用 Ajax,我也想要同样的效果。可能吗?

最佳答案

使用 AJAX 处理文件并不那么简单。由于不同的客户、大量的文件和所有这些东西,它会出现很多问题。 (正如您在“简单”中看到的-此处错误=)在您的情况下,没有选择任何文件,因此无需发送有关“没有给定文件”的信息。不产生管理费用。也许你看看你的 Controller 。如果数据不同(AJAXPOST 或 POST),则创建两个 PHP 操作。一个 AJAX 处理程序和一个 POST 处理程序。在这种情况下,您可以处理不同的后期数据。

此信息将帮助您: How can I upload files asynchronously?

您需要使用类似 Uploadify 的插件,或Valums使之发挥作用。只需阅读更多有关 AJAX 和 Filepost 的内容即可。

关于javascript - Ajax:如何使用 FormData 和 jQuery 发送 'empty' 文件并在 $_FILES 中获取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20581019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com