AJAX文件上传到php,没有发送任何内容
AJAX file upload to php, nothing being sent?
我的网站上有一个输入,允许用户选择一个文件上传
<input type="file" name="file" id="file" />
在我的页面末尾,我有一个按钮,它调用一个javascript函数。该函数需要检查用户是否指定了要上传的文件,如果指定了,则上传文件(php)并获取文件名。
如何从javascript访问文件输入表单?即,如何获取"post"文件信息以调用"upload_file.php"。
ps。我宁愿不使用JQuery
编辑-我试过这个,它似乎不起作用
function uploadFile(){
var files = document.getElementById('file');
var file = files.files[0];
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
alert(xmlhttp.responseText);
}
}
xmlhttp.open("POST","uploadfile.php",true);
xmlhttp.setRequestHeader("Content-type", "multipart/form-data")
var formData = new FormData();
formData.append("thefile", file);
xmlhttp.send(formData);
}
php:
<?php
echo "Upload: " . $_FILES["thefile"]["name"] . "<br />";
echo "Type: " . $_FILES["thefile"]["type"] . "<br />";
echo "Size: " . ($_FILES["thefile"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["thefile"]["tmp_name"] . "<br />";
?>
正在给我一个警告,说文件名为空,类型为空,大小为0等。
它可以通过DOM访问,就像任何其他元素一样。唯一的限制是,出于安全原因,您不能更改它。
http://www.simonerodriguez.com/ajax-form-submit-example/
请查看此链接以获取ajax文章。你们可以简单地把它贴成一个普通的表格,不需要额外的努力。
您是否考虑过HTML5文件API?
相关堆栈溢出:
Html 5文件上传
我认为您需要这样的东西:http://jsfiddle.net/kHQLp/4/
通过AJAX实现这一点有以下问题,因此可以实现(IE除外)。
1) 这对IE来说是不可能的。如果有人找到了办法,就给我喊一声。我所做的只是以正常的方式提交表格并返回更新的页面。
2) 对于FF(如果内存适合Opera和Safari),以下片段适用于
var fileTag = document.getElementById('id for input element');
var file = fileTag.files[0];
// You can check the type here by checking the string file.type
var data = file.getAsBinary(); // Or getAsText()
3) 对于Chrome使用此代码
var fileTag = document.getElementById('id for input element');
var file = fileTag.files[0];
var reader = new FileReader();
reader.onload = function() { /* Use reader.result as it has loaded */ };
reader.onerror = function(e) { /* and error occurred - handle it */ };
reader.readAsText(file); // I think there is also a function readAsBinary.
当你得到文件的内容后,你可以使用AJAX 发布它
通过替换解决了我的问题
xmlhttp.setRequestHeader("Content-type", "multipart/form-data")
带有
xmlhttp.setRequestHeader("enctype", "multipart/form-data")
相关文章:
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- 检查是否对任何输入文件进行了更改
- 我想将任何xml文件导出到excel文件(xls或制表符分隔)
- 使用 CasperJS 时,是否可以在执行任何内联或外部 Javascript 之前与加载页面的 DOM 进行交互
- Dojo 小部件:如何设置小部件内文件的 url
- 默认为文件夹中的任何html文件
- 如何使用javascript在同一位置编辑和保存计算机中的任何文本文件.函数调用时,
- 找不到“”;应用程序“;模板或视图.对象{fullName:“template:application”}将不呈现任何内
- 如何在没有任何内置函数的情况下将元素添加到数组中
- 动态加载jwplayer或任何js文件
- 如何获得元素id点击没有任何内联函数调用在javascript
- 在javascript/jquery中是否有任何内置功能来过滤邮件,如php's函数(!使用filter_var
- 在JavaScript中过滤数组,而不使用任何内置函数或新数组
- Nodejs打开ppt, doc或任何其他文件
- Jquery是否有任何内置方法来单独查找可验证的元素?
- 我没有得到任何SWF文件,但得到弹出消息-这个页面需要AC_RunActiveContent.js
- 我试图在不使用任何内置方法的情况下延迟此函数.为什么这行不通呢?
- 如何在不使用javascript中任何内置函数的情况下反转字符串
- Angular Bootstrap-ui 是否有任何内置函数来处理打开或关闭的东西