我的是:<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
请各位大侠指教!!!!