Ajax:如何发送'空'文件,并在$_FILES中获取
Ajax: How to send 'empty' file using FormData and jQuery and get it in $_FILES
我有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,但我有字段"myfile"等于"undefined"的$_POST。但我需要$_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处理文件并没有那么简单。由于不同的客户端、庞大的文件和诸如此类的东西,它会遇到很多问题。(正如您在"simple"-Error here=中看到的那样)在您的情况下,没有选择任何文件,因此无需发送有关"没有给定文件"的信息。不要产生间接费用。也许你可以看看你的控制器。如果数据不同(AJAX POST或POST),那么创建两个PHP操作。一个AJAX处理程序和一个POST处理程序。在这种情况下,您可以处理不同的邮政数据。
这些信息将帮助您:如何异步上传文件?
你需要使用Uploadify或Valums这样的插件来实现这一点。只需阅读更多关于AJAX和Filepost的内容。
您可以检查$_FILES['myfile']['error']
和$_FILES['myfile']['size']
,并返回您选择的数组作为结果。如果$_FILES['myfile']['error']等于零,则没有错误。您可以在php.net 上找到更多详细信息
- 获取屏幕截图并在电子邮件中发送的按钮
- AJAX调用并在Node中获取返回数据
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 从二维数组中获取img src和img维度,并在body中显示
- 捕获鼠标关闭事件并在 Mozilla 中获取 clientX 和 clientY
- 如何获取javascript输入并在html中调用它
- 如何从单选按钮中获取多个值,然后将它们分配到单个变量中并在页面上显示
- 从输入中获取字符串,并在AngularJS中发出AJAX请求
- 获取 HTML 5 音频控制文件位置并在不使用 id 选择器的情况下更新 src
- 如何使用Javascript获取当前页面URL,并在<a href="[the_URL]”>
- 无法获取表单's面板的x和y坐标,并在加载时从cookie中设置它们
- 从子输入中获取id值,并在更改时将其推送到Javascript中的数组中
- 获取第一个字符串并在 Ajax 中进行比较
- 从 Zend 控制器传递值并在 JS 响应中获取它
- 如何遍历.txt文件并在javascript中获取值
- 根据选择选项元素将表单重定向到不同的URL,并在电子邮件中获取表单详细信息
- 使用完整日历在网站上获取并显示来自Google日历事件的附加图像
- 从服务器获取并传递给浏览器以在 Javascript 中格式化的日期时间格式
- 如何获取id并在ror中基于该id显示下一个字段
- Ajax:如何发送'空'文件,并在$_FILES中获取