基于jQuery的ajax方式的图片上传
2020-07-14 05:32
411 查看
文件上传一般有两种方式:
- 一是将文件直接以二进制的方式存储在数据库中,这种方式读取影响性能
- 二是数据库直接存储文件的URL地址,读取文件的话直接根据数据库存储的URL地址进行读取。
所以,一般来说我们采用方式二!
html页面
$("#upload-btn").click(function () { var formData = new FormData($("#addPhotoForm")[0]);//对于文件类型的数据不能转化为json字符串,所以需要new FormData() $.ajax({ url: "${pageContext.request.contextPath}/student/upload_photo", type: "POST", data: formData, /** *必须false才会自动加上正确的Content-Type */ contentType: false, /** * 必须false才会避开jQuery对 formdata 的默认处理 * XMLHttpRequest会对 formdata 进行正确的处理 */ processData: false, success: function (data) { if (data.type == "success") { $.messager.alert("消息提醒",data.msg,"info"); $("#photo-preview").attr("src",data.src);//将文件的位置添加到图片预览处 $("#add_photo").val(data.src);//将文件上传的地址添加到隐藏的文本域中,用于之后将位置上传到数据库 //关闭窗口 $("#editDialog").dialog("close"); } if (data.type == "error") { $.messager.alert("消息提醒",data.msg,"info"); } //$("#photo-preview").hide();//隐藏照片 } }); }); <form id="addPhotoForm" method="post" enctype="multipart/form-data" action="/upload_photo" target="photo_target"> <table id="addTable1" cellpadding="8"> <tr > <td>预览头像:</td> <td> <img id="photo-preview" src="" alt="照片" style="max-width: 100px; max-height: 100px;" title="照片" /> </td> </tr> <tr> <td>学生头像:</td> <td> <input id="add-upload-photo" class="easyui-filebox" name="photo" data-options="prompt:'选择照片'" style="width:200px;"> <a id="upload-btn" href="javascript:;" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:true">上传图片</a> </td> </tr> </table> </form>
**Springmvc的Controller页** @RequestMapping(value="/upload_photo",method= RequestMethod.POST) @ResponseBody public Map<String,String> uploadPhoto(MultipartFile photo,HttpServletRequest request){ Map<String,String> map = new HashMap<>(); if (photo == null){ map.put("type","error"); map.put("msg","请选择一张图片"); return map; } //判断文件名大小是否过大 if (photo.getSize() >= 10485760){ map.put("type","error"); map.put("msg","文件大小超过10M"); return map; } //保存位置 String path = request.getSession().getServletContext().getRealPath("/photo/"); //判断文件夹是否存在,无则建 File file = new File(path); if (!file.exists()){ file.mkdirs(); } //给文件名起唯一值 String filename = photo.getOriginalFilename(); String uuid = UUID.randomUUID().toString().replace("-",""); //保存文件 filename = uuid+"_"+filename; try { photo.transferTo(new File(path,filename));//保存文件 } catch (IOException e) { map.put("type","error"); map.put("msg","上传失败"); return map; } HttpSession session = request.getSession(); map.put("src",session.getServletContext().getContextPath()+"/photo/"+filename);//获取文件的路径 map.put("type","success"); map.put("msg","上传成功"); return map; }
相关文章推荐
- 再次和大家分享我的图片上传插件,基于jquery的上传插件,ajax图片上传。
- 基于jquery 插件 ajax 上传图片
- 图片上传插件,基于jquery的上传插件,ajax图片上传,再更新
- 图片上传插件,基于jquery的上传插件,ajax图片上传, 更新更新啦
- Ajax+PHP+jQuery图片裁剪上传
- jQuery插件之ajaxFileUpload(异步上传图片并实时显示,并解决onchange后ajaxFileUpload失效问题)
- 基于jQuery的ajax系列之用FormData实现页面无刷新上传
- jQuery插件ajax图片上传插件
- ajax无刷新上传图片,基于springMVC
- 基于HTML5 Ajax文件上传进度条如何实现(jquery版本)
- jquery php ajax多图片上传.上传进度,生成缩略图
- .net+ajax+jquery.form实现简单的图片批量上传 含Demo源码下载
- MVC4中基于bootstrap和HTML5的图片上传Jquery自定义控件
- 基于Jquery插件Uploadify实现实时显示进度条上传图片
- 使用jQuery开发一个基于HTML5的漂亮图片拖拽上传web应用
- 基于 jQuery 的图片自动上传插件
- SpringMVC+ajaxFileUpload上传图片 IE浏览器弹下载框问题解决方式
- 基于HTML5多图片Ajax上传可预览
- JS/html/form/XMLHttpRequest Ajax 批量上传文件/图片的3种方式
- 原生ajax和iframe框架实现图片文件上传的两种方式