Javascript Ajax文件上传到php类
我正试图使用ajax将文件上传到一个面向对象类,但它没有正确上传 这里是ajaxJavascript Ajax文件上传到php类,javascript,ajax,Javascript,Ajax,我正试图使用ajax将文件上传到一个面向对象类,但它没有正确上传 这里是ajax var handleUpload = function(event) { event.preventDefault(); event.stopPropagation(); var fileInput = document.getElementById('file'); var data = new FormData(); for(var i = 0; i < fileInput.files.le
var handleUpload = function(event)
{
event.preventDefault();
event.stopPropagation();
var fileInput = document.getElementById('file');
var data = new FormData();
for(var i = 0; i < fileInput.files.length; i++)
{
data.append('file[]', fileInput.files[i]);
}
var request = new XMLHttpRequest();
request.upload.addEventListener('progress', function(event)
{
});
request.upload.addEventListener('load', function(event)
{
});
request.upload.addEventListener('error', function(event)
{
});
request.open('POST', 'profile.php');
request.setRequestHeader('Cache-Control', 'no-cache');
request.send(data);
}
window.addEventListener('load', function(event)
{
var submit = document.getElementById('submit');
submit.addEventListener('click', handleUpload);
});
AJAX调用失败,因为无法异步提交文件*。这就是为什么
$\u文件
是空的。您可以(也应该)使用所谓的iframe表单post-hack(或者切换到jquery和
*这一点在本文中讨论。有关浏览器支持的信息,请参阅。将表单发布到隐藏的iframe
正如@nietonfir所描述的,您不能仅仅使用XMLHTTPRequest发布一个input=file的表单。但是,当XHR2不可用(或者您不想使用它)时,一种常见的解决方法是将表单发布到页面上的隐藏iframe。有许多JavaScript库/jQuery插件等为这一点提供了抽象(只看一个例子),但概念相当简单。我感觉这一点以前已经被问过一千次了。你查过我们第一次进去吗?没有一个接近我的question@user2872510,我怀疑这是可能的,我已经看过了,拜托,当然有可能,我已经说过了。但不能使用纯XMLHTTPRequest。如果您不相信我或不使用SO搜索,请自己用谷歌搜索它:,这里有一个例子,您是否设置了表单的enctype=“multipart/form data”?
if(!empty($_FILES['file']) && isset($_POST['special']))
{
$special = $_POST['special'];
$date = $_POST['date'];
$user->postSpecial($special, $date, $_FILES);
}