通过ajax上传文件
html前端代码(表单内的标签必须有name属性才可以被后台获取)
必须要在form标签中设置属性 ??enctype="multipart/form-data"
需要借助 FormData 对象
var formData = new FormData($("#form")[0]);
Ajax 代码
<script> function up() { var formData = new FormData($("#form")[0]); //创建FormData对象 if($("#file").val() == ""){ //判空 alert("未选择文件"); return ; } formData.append(‘img‘, $(‘#file‘)[0].files[0]) //把file添加进去 name命名为img FormData.append(key,value); $.ajax({ url: "/web02_war_exploded/img", //发送的地址 data: formData, //发送的数据 type: "post", //发送的方式 contentType: false, processData: false, //序列化数据 默认为true(不序列化) success: function(data) { alert("操作成功"); }, error: function() { alert("操作失败"); } }) } </script>
后端代码
private Map<String, String> getParameters(HttpServletRequest request) { Map<String, String> params = new HashMap<>(); try { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { if (item.isFormField()) { //判断是否是普通的表单类型 params.put(item.getFieldName(), item.getString()); }else{ //否则该表单是 File 型的 String fieldName = item.getFieldName(); //返回表单的name属性 String name = item.getName(); //返回文件的名称 File fil = new File("D:\\"+name); //创建文件对象 item.write(fil); //把上传的文件下载 } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return params; }
Ajax中文乱码问题:https://blog.csdn.net/qq_22771739/article/details/81564042
相关推荐
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
时光如瑾雨微凉 2020-07-19
83510998 2020-07-18
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05