求助如何用XMLHttpRequest传送文件?

diablox0147 2012-03-27 03:50:35
我如果直接用表格提交的话可以传送文件,但是如果使用下面的XMLHttpRequest传送的话却无法传送为啥呢???

 $(
function()
{
var progressBar = document.querySelector("#progressBar");
var file = document.querySelector("#file");
file.onchange = function(){

};//onchange

$("#MainBoard #submit").click( function(){

if(file.files[0])
{
$("#progressBar").css("display","inline");
$("#MainBoard input").attr("disabled","disabled");
var xhr = new XMLHttpRequest();
if(xhr)
{
xhr.open('POST','mySpace_addFile.php');
//soit utilise xhr.onreadystatechange
if(xhr.readyState == 1)//1==Opened
{
xhr.onload = function(){
if(xhr.readyState==4)
alert("Upoload over");
else
alert("Error in upload");
$("#progressBar").css("display","none");
$("#MainBoard input").removeAttr("disabled");
};//onload
xhr.upload.onprogress = function(e){
progressBar.value = e.loaded;
progressBar.max = e.total;
};//onprogres

var form = new FormData();
form.append('new_file', file.files[0]);//这个是文件,应该在$_FILES里
form.append('anti_multipl',$("anti_multipl").val());//这个是变量,应该在$_POST里
xhr.send(form);
}else{
alert("Cannot open server for upload");
}
}
}

});//click
});//ready
...全文
346 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellNo 2012-03-27
  • 打赏
  • 举报
回复
diablox0147 2012-03-27
  • 打赏
  • 举报
回复
那xhr不是也可以调用setRequestHeader设置的么?
挨踢直男 2012-03-27
  • 打赏
  • 举报
回复
ajax不能上传文件
enctype="multipart/form-data"
并不是ajax post的形式
plzzz 2012-03-27
  • 打赏
  • 举报
回复
估计xhr做不了这个,
这个应该算作无刷新上传文件
记得以前看到有动态过建一个iframe让那个iframe以 提交文件的方式上传..网上应该有很多这类的库文件,

2用flash模块上传..
diablox0147 2012-03-27
  • 打赏
  • 举报
回复
可是我发送的是一个字符串和一个二进制文件啊, 不是XML那样的字符串文件

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧