var fd = new FormData();传不了数据

时间:2022-04-06 20:38:45
var fd = new FormData();
fd.append("FileData",document.getElementById('upload_file').files);
var xhr = XMLHttpRequest();
//xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.onreadystatechange=mycallback;
xhr.open("POST", url);
xhr.setRequestHeader("X-Requested-With","XMLHttpHequest");
xhr.setRequestHeader('Content-Type','multipart/form-data;boundary=---------------------------' + new Date().getTime());
xhr.send(fd);



不知道这些写是不是对的,但我传不了文到后台去
 string sPath = context.Server.MapPath(@"../../UploadFile");
            for (int i = 0; i < context.Request.Files.Count;i++ )
            {
                HttpPostedFile file = context.Request.Files[i];
                file.SaveAs(sPath + "\\" + file.FileName);
            }


后台调试时文件数总是0
前台调试时感觉 fd.append("FileData",document.getElementById('upload_file').files);
这句话没用添加数据进去一样
ie10 firfox22都是一样的
fd.append("FileData","sdfasd");连传文本都不行

还有一个我选了3个文,想取消其中一个该怎么做啊

15 个解决方案

#1


楼主这个用的是jquery上传插件吗?   uploadify

#2


fd.append("FileData",document.getElementById('upload_file').files [0]);


html5 ajax上传文件asp.net示例

#3


楼上的方法我也试过,但不行

#4


还有问一下这个可以跨域吗?好像是跨域的问题
我用ifream
 form action=跨域是没问题的,可以上传文

#5


不支持ie8吗         var formdata = new FormData();

#6


我用的是IE10 firfox22都一样不行

#7


一步步调试下,搞不好是语法问题

#8


我试过一步一步调的,fd.append("FileData","sdfasd");在监视fd的时候总感觉好像没有添加数据时去,好像里面是空的,我也不知道怎么回事,这句话也不报错啊

#9


先用ff调试一下,看看前台有没有传递数据
在百度一下Content-Type=multipart/form-data,设置了这个后不能直接得到文本值得
这个我前段时间做过,要做一些处理

#10


FF 和 IE我都调过,FormData这个对像只里有一个方法可用,监视这个变量的时候好像是看不到里面是否添加了数据。Content-Type=multipart/form-data这个是为了传文件,可不管传文件还是字符都不无法获取数据

#11


xhr.setRequestHeader('Content-Type','multipart/form-data;boundary=---------------------------' + new 
这句话不能要
传文件只能files[i],一个一个传
HttpPostedFile file = Request.Files["FileData"]这样接收文件

#12


formdata在IE里面不兼容

#13


formdata 在ie8,9下有问题,

#14


var fd = new FormData();
        fd.append("FileData",document.getElementById('upload_file').files);
        var xhr = XMLHttpRequest();
        //xhr.upload.addEventListener("progress", uploadProgress, false);
        xhr.addEventListener("load", uploadComplete, false);
        xhr.addEventListener("error", uploadFailed, false);
        xhr.addEventListener("abort", uploadCanceled, false);
        xhr.onreadystatechange=mycallback;
        xhr.open("POST", url);
        xhr.setRequestHeader("X-Requested-With","XMLHttpHequest");
        xhr.setRequestHeader('Content-Type','multipart/form-data;boundary=---------------------------' + new Date().getTime());
        xhr.send(fd);
我想知道你的这些代码 写在哪里了? 是控制器里面还是页面里面啊

#15


这样写试试:
var fd = new FormData(document.getElementById("upload_file"));
$.ajax({
  url: "<c:url value='/test/hello.action'/>",
  type: "POST",
  data: fd,
  processData: false,  // 告诉jQuery不要去处理发送的数据
  contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
  success: function (json) {
  $.messager.progress('close');
  if (json.flag == 'SUCCESS') {
alert("新增成功");
} else {
alert("新增失败:"+json.msg);
}
    }
});

#1


楼主这个用的是jquery上传插件吗?   uploadify

#2


fd.append("FileData",document.getElementById('upload_file').files [0]);


html5 ajax上传文件asp.net示例

#3


楼上的方法我也试过,但不行

#4


还有问一下这个可以跨域吗?好像是跨域的问题
我用ifream
 form action=跨域是没问题的,可以上传文

#5


不支持ie8吗         var formdata = new FormData();

#6


我用的是IE10 firfox22都一样不行

#7


一步步调试下,搞不好是语法问题

#8


我试过一步一步调的,fd.append("FileData","sdfasd");在监视fd的时候总感觉好像没有添加数据时去,好像里面是空的,我也不知道怎么回事,这句话也不报错啊

#9


先用ff调试一下,看看前台有没有传递数据
在百度一下Content-Type=multipart/form-data,设置了这个后不能直接得到文本值得
这个我前段时间做过,要做一些处理

#10


FF 和 IE我都调过,FormData这个对像只里有一个方法可用,监视这个变量的时候好像是看不到里面是否添加了数据。Content-Type=multipart/form-data这个是为了传文件,可不管传文件还是字符都不无法获取数据

#11


xhr.setRequestHeader('Content-Type','multipart/form-data;boundary=---------------------------' + new 
这句话不能要
传文件只能files[i],一个一个传
HttpPostedFile file = Request.Files["FileData"]这样接收文件

#12


formdata在IE里面不兼容

#13


formdata 在ie8,9下有问题,

#14


var fd = new FormData();
        fd.append("FileData",document.getElementById('upload_file').files);
        var xhr = XMLHttpRequest();
        //xhr.upload.addEventListener("progress", uploadProgress, false);
        xhr.addEventListener("load", uploadComplete, false);
        xhr.addEventListener("error", uploadFailed, false);
        xhr.addEventListener("abort", uploadCanceled, false);
        xhr.onreadystatechange=mycallback;
        xhr.open("POST", url);
        xhr.setRequestHeader("X-Requested-With","XMLHttpHequest");
        xhr.setRequestHeader('Content-Type','multipart/form-data;boundary=---------------------------' + new Date().getTime());
        xhr.send(fd);
我想知道你的这些代码 写在哪里了? 是控制器里面还是页面里面啊

#15


这样写试试:
var fd = new FormData(document.getElementById("upload_file"));
$.ajax({
  url: "<c:url value='/test/hello.action'/>",
  type: "POST",
  data: fd,
  processData: false,  // 告诉jQuery不要去处理发送的数据
  contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
  success: function (json) {
  $.messager.progress('close');
  if (json.flag == 'SUCCESS') {
alert("新增成功");
} else {
alert("新增失败:"+json.msg);
}
    }
});