用ajax上传文件的若干问题,老是报:Posted content type isn't multipart/form-data。参考网上若干文章:比如http://harttle.com/2016/07/04/jquery-file-upload.html 等,进行若干尝试,按理应该是可以上传成功的吧?是否是我又说忽视?
页面代码(有点乱,别介意哈):
<html>
<head>
<title>测试</title>
<script type="text/javascript" src="/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
$(function(){
$("#btn").click(function() {
//var form = new FormData(document.getElementById("form1"));
/* var formData = $(document.getElementById("form1")).serialize();
$.ajax({
url: "/test/upload",
type: "post",
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
headers: {'Content-Type': 'multipart/form-data'},
success:function(data){
console.log("over..");
},
error:function(e){
alert("错误!!");
}
}); */
/* var formData = new FormData();
formData.append('file', $('#file')[0].files[0]); */
/* $.ajax({
url: '/test/upload',
type: 'POST',
cache: false,
data: new FormData($('#form1')[0]),
processData: false,
contentType: false
}).done(function(res) {
}).fail(function(res) {}); */
var files = $('#avatar').get(0).files;
var data = new FormData();
data.append('file', files[0]);
$.ajax({
url: '/test/upload',
type: 'POST',
data: data,
cache: false,
processData: false,
contentType: false
});
});
});
</script>
</head>
<body>
<h1>测试测试测试</h1>
<div class="table_box">
<br><br><br>
<!-- <form id="form1" action="/test/upload" method="post" enctype="multipart/form-data" > -->
<!-- <form id="form1" enctype="multipart/form-data"> -->
<!-- <input type="file" id="file" name="file"></input>
<input type="text" id="aa" name="h1"></input>
<input type="text" id="bb" name="h2"></input>
<input type="button" onclick="" id="btn" value="上传"> -->
<!-- </form> -->
<form>
<input type="file" id="avatar" name="avatar" multiple>
<input type="button" id="btn" value="上传">
</form>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</div>
</body>
</html>后台代码:
public void upload(){
UploadFile file = getFile("file", "\\");
System.out.println(getPara("h1"));
System.out.println(getPara("h2"));
System.out.println(file.getUploadPath()+""+file.getFileName()+""+file.getOriginalFileName());
renderJson(Tools.getResult(200));
}尝试了网上N种ajax上传,然后用jfinal来处理,结果大多都是报Posted content type isn't multipart/form-data,还有一次是报 分界不明确。没有用别的框架试过,但是按道理网上那么多种方法总有一种能行的吧,结果每一种能OK?!是否是我忽视了什么鬼?求指出指出指出!!!
$(document).ready(function() {
$("#myArticleForm").ajaxForm({
dataType: "json"
, success: function(ret) {}
, error: function(ret) {}
});
});
这行代码的两个关键点注意一下:
1:注意页面 form 表单的 id 属性为:myArticleForm,这个可以改,注意对上js中的选择器使用的名称就好,也可以使用别的选择器
2:注意页面 form 表单需要设置 method 与 enctype 属性: method="POST" enctype="multipart/form-data"