ajax servlet fileupload 报错

本文详细介绍了如何使用Ajax和Servlet实现文件上传,包括前端的JavaScript代码和后端的Servlet处理逻辑,解决了请求中未找到multipart边界的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 我的是:<form name="form" action="javascript:dosss();" enctype="multipart/form-data">我直接用表单提交可以实现,但是用这种方法,servlet处理完之后,必须得跳转,只能用ajax.
<script type="text/javascript">
 //统计资源访问次数的脚本
 //定义XMLHttpRequest对象
 var http_request1=false;
 function send_request1(url){
  http_request1=false;
  //开始初始化XMLHttpRequest对象
  if(window.XMLHttpRequest){//Mozilla等浏览器初始化XMLHttpRequest过程
  http_request1=new XMLHttpRequest();
  //有些版本的Mozilla浏览器处理服务器返回的未包含XML mime-type头部信息的内容时会出错.
  //因此,要确保返回的内容包含text/xml信息.
  if(http_request1.overrideMimeType){
  http_request1.overrideMimeType("text/xml");
  }
  }
  else if(window.ActiveXObject){//IE浏览器初始化XMLHttpRequest过程
  try{
  http_request1=new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e){
  try{
  http_request1=new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch(e){}
  }
  }
  //异常,创建对象失败
  if(!http_request1){
  window.alert("不能创建XMLHttpRequest对象实例!");
  return false;
  }
  //指定响应处理函数
  http_request1.onreadystatechange=ps;
  //发送HTTP请求信息
  http_request1.open("POST",url,true);

  http_request1.setRequestHeader("Content-Type","multipart/form-data");
  //将参数放到这里,后台servlet可以用request.getParameter()方法取到这些参数
  var firstName = document.getElementById("firstName").value;  
  var queryString = "firstName=" + firstName + "";  

  http_request1.send(firstName);

 }
 //处理返回信息函数
 function ps() {
if(http_request1.readyState==4){
  //判断HTTP状态码
  if(http_request1.status==200){
  //信息已经成功返回,无动作
  }
  else { 
  }
  }
}
 function dosss(){
send_request1("/m/upload"); //这里的rewriteUrl就是页面上放置的资源经过重写后的链接
}
</script>

servlet:

request.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
           DiskFileItemFactory factory = new DiskFileItemFactory();
 
           factory.setSizeThreshold(1024 * 1024); // 文件1M,写入缓存,大于1M,写入硬盘
           factory.setRepository(tempPathFile);//
 
           ServletFileUpload upload = new ServletFileUpload(factory);
 
           upload.setSizeMax(12582912);
 
           List<FileItem> items = upload.parseRequest(request);
           Iterator<FileItem> i = items.iterator();
           String fileName =null;
           String tableName = "";
           HashMap<String,File> files = new HashMap<String, File>();
           String warnStr = "";
           while (i.hasNext()) {
              FileItem fi = (FileItem) i.next();
              if(fi.isFormField()){

              } else {
             //保存文件,其实就是把缓存里的数据写到目标路径下
               fileName = fi.getName();

             }

           }

 

报错:

the request was rejected because no multipart boundary was found

 

请各位大侠指教!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值