图片上传路径问题处理
2019-03-27 14:51
106 查看
图片上传路径相关问题
点击添加,弹出页面
前台jsp页面代码:
**添加按钮,注册事件,以及按钮组** /* data-method="add"*/ <div id="gridToolBar" style="height:auto"> <div style="margin-bottom:5px"> <a href="javascript:;" data-method="add" class="easyui-linkbutton" iconCls="icon-add" plain="true">添加</a> ... </div> </div>
添加按钮点击事件
add(){ // alert("你点了添加"); //把所有带data-show的元素显示起来 $("*[data-show]").show(); // $("*[data-show] input").validatebox("enable"); //打开对话框 productDialog.dialog("center").dialog("open"); //把form中的数据清空 productForm.form("clear"); }
点击按钮弹出框代码
/*enctype="multipart/form-data"这个属性记得加上 */ <form id="productForm" method="post" **enctype="multipart/form-data"**> <table cellpadding="5"> <tr> <td>产品名称:</td> <td><input class="easyui-validatebox" type="text" name="name" data-options="required:true"></input></td> </tr> <tr> <td>产品颜色:</td> <td><input class="easyui-validatebox" type="color" name="color" data-options="required:true" value="green"></input> </td> </tr> <tr> <td>产品图片:</td> <td> <input 1c140 class="easyui-filebox" name="fileImage" style="width:300px " buttonText="选择图片" <%--data-options="valueField:'id',textField:'name',url:'/util/productList'"--%>/> </td> </tr> ... </table> </form>
保存save的js代码
//保存功能 //保存路径/product/save save(){ //根据id确定是添加路径还是修改路径 var url = "/product/save"; var id = $("#productId").val(); if(id){ url = "/product/update?cmd=update"; } productForm.form('submit', { url:url, //提交表单前的方法 onSubmit: function(){ return $(this).form('validate'); }, //操作成功后的回调 {success:true,msg:xxx} success:function(data){ console.log(data); //返回的是JSON字符串,我们需要把转成一个JSON对象 var result = JSON.parse(data); if(result.success){ //成功后刷新 productDataGrid.datagrid("reload"); //关闭窗口 productDialog.dialog("close"); }else{ //把失败信息做一个提示 $.messager.alert("提示",`错误:${result.msg}`,"error"); } } }); },
后台代码
@Controller @RequestMapping("/product") public class ProductController { @RequestMapping("/save") @ResponseBody public JsonResult save(Product product, HttpServletRequest req){ return saveOrUpdate(product,req); } //添加或者修改 private JsonResult saveOrUpdate(Product product, HttpServletRequest req){ //下面是解决上传文件为空报错的问题 MultipartFile fileImage = null; boolean isMultipart = ServletFileUpload.isMultipartContent(req); System.out.println("isMultipart:"+isMultipart);//false if (isMultipart){//这个方法进不来,前面又设置了null,怎么保存数据嘛 MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(req, MultipartHttpServletRequest.class); fileImage = multipartRequest.getFile("fileImage"); } uploadImage(product, fileImage, req); try { productService.save(product); } catch (Exception e) { e.printStackTrace(); return new JsonResult(false,e.getMessage()); } return new JsonResult(); }
uploadImage(product, fileImage, req);//留意这个方法
这个JsonResult是一个返回的Json结果集
public class JsonResult { private Boolean success=true; private String msg; public JsonResult() { } public JsonResult(Boolean success, String msg) { this.success = success; this.msg = msg; } ... getter/setter方法 ... }
uploadImage方法代码
//图片上传功能 private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HHmmssS"); //图片上传功能 public void uploadImage(Product product, MultipartFile fileImage, HttpServletRequest req){ if(fileImage!=null) { String webapp = req.getServletContext().getRealPath("/"); //图片存在就把它给删除掉 try { // 上传文件命名,拷贝到webapp的位置,设置pic到product Date date = new Date(); // 大小图的路径+文件名称 String fileName = "/images/productImg/" + sdf.format(date) + ".png"; String smallFileName = "/images/productImg/" + sdf.format(date) + "_small.png"; // 大小图的在服务器上面的物理路径 File destFile = new File(webapp, fileName); File smallDestFile = new File(webapp, smallFileName); // 生成upload目录 File parentFile = destFile.getParentFile(); if (!parentFile.exists()) { parentFile.mkdirs();// 自动生成upload目录 } // 把上传的临时图片,复制到当前项目的webapp路径 //FileUtils.copyFile(upload, destFile); FileCopyUtils.copy(fileImage.getInputStream(), new FileOutputStream(destFile)); // 处理缩略图 //Thumbnails.of(upload).scale(0.1F).toFile(smallDestFile); Thumbnails.of(fileImage.getInputStream()).scale(0.1F).toFile(smallDestFile); // 把大小图的相对webapp的路径设置到数据库产品表里面 product.setPic(fileName); product.setSmallpic(smallFileName); } catch (Exception e) { e.printStackTrace(); } } }
数据库保存信息
路径/images/perfume
界面展示
总体流程详图
总结:
图片上传路径,前台页面,在文件选择的jsp页面代码中,提交方式为:post,enctype类型为"multipart/form-data"这个一定得记得添加,然后前台js页面代码,你选择的提交方式,以及调节路径,就是哪个url:/product/save,
在后台处理文件保存的时候,空文件的判断,你当前项目webapp路径问题的获取,以及你想要保存的图书路径的拼接问题,你都的注意,避免写错或者其他,
最后在页面展示的时候,你product产品domain类的字段要和你展示数据的jso页面字段对应上.
相关文章推荐
- IE8 用滤镜实现上传预览图片,解决C:\fakepath\*.jpg问题,获取本地路径
- vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
- 百度富文本编辑器的上传图片的路径问题
- v9切换ueditor后图片上传路径问题 改成绝对路径
- django2上传的图片打不开、图片不显示路径问题解决办法
- 图片上传的路径问题
- 用户上传图片后实现图片预览效果(解决fakepath路径问题)
- 百度富文本编辑器的上传图片的路径问题
- 百度富文本编辑器的上传图片的路径问题
- Angular4实现图片上传预览路径不安全的问题解决
- fckeditor图片上传绝对路径问题
- java web项目中上传文件、图片路径问题
- JS前端上传图片、压缩、并且处理旋转问题,生成base64数据
- 百度富文本编辑器的上传图片的路径问题
- 普通博客头像图片上传路径问题,求大神指点!!!!!
- java应用程序中处理配置文件和图片路径在打包后路径不对的问题
- JSP_处理访问图片路径问题
- 浅谈用Webpack路径压缩图片上传尺寸获取的问题
- IOS应用开发-图片处理(拉伸图片 创建缩略图 解决图片旋转的问题 图片编码及上传 将图片写入磁盘)
- Android:Camera的使用,并处理手机拍照后上传图片被旋转的问题