吾生也有涯,而知也无涯~欢迎优化补充、指正!
(直接复制demo即可使用,或者单独粘贴相应片段!)
写项目与前端做交互式时出现一个问题:form表单正常提交文件,后台可以收到,但当使用ajax异步上传时就无法获取…
经过本后台一番‘云雨’之后,发现一个惊天秘密--FormData (估计是自己写后台对jquery了解不足才感到惊讶~)
废话不多敲,demo如下:
1.前端form
<!-- 上传文件别忘记加 enctype="multipart/form-data" -->
<form method="post" id="productUploadForm" enctype="multipart/form-data" encoding="multipart/form-data">
<input type="file" class="up_file" name="excel" value="" id="filename">
<a class="product_upload"><span class="fa fa-upload"></span> 上传商品</a>
</form>
2.前台js
<script type="text/javascript">
$(document).ready(function(){
$(".product_upload").click(function () {
var formData = new FormData($("#productUploadForm")[0]);
$.ajax({
type : "post",
data : formData,
url : '__HTTP__/index/order/uploadExcel', //ajax上传的路径
dataType : 'json',
contentType: false, //必须,告诉jquery不要设置Content-Type请求头
processData: false, //必须,告诉jquery不要处理发送的数据
success : function(res) {
//^V^
},
error : function(res) {
//^M^
}
});
});
});
</script>
3.后台接收
echo "
爱怎么接就怎么接,和form正常提交的接法一毛一样!直接获取input name即可
";