博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根目录97 <input file>标签,把图片上传到服务器(跟增删改查一起实现)
阅读量:4624 次
发布时间:2019-06-09

本文共 10184 字,大约阅读时间需要 33 分钟。

1 首先来个简单的html页面: enctype="multipart/form-data" encoding="multipart/form-data" action="../../后台/后台方法.do"  //form表单加上这几个属性 action指向后台添加方法  2   3   4   5      //开始上传的按钮,主要是submitform方法  6   7 //上传 javascript代码  还有一些参数跟着一起存进数据库  8 $(".submitform").live("click",function(){  9 var $this = $(this); 10 var j = location.href; 11 var idd=j.substring(j.indexOf("=")+15,j.length);  //截取字符串 获得ID 12 $("#iiii").val(idd);  //把ID赋给隐藏域 input,后台取得id作为条件进行查询 13 $("#noticecontentStr").val(editor.html());   //无法获取编辑器的值,所以赋给隐藏域,后台获取隐藏域的值进行添加 14 $this.parents("form").find("td input[type!='button'],td select").siblings("span").remove(); 15 $this.parents("form").find("td input[type!='button'],td select").show(); 16 if ($this.attr("onready") == "false") { 17 $this.attr("onready", "true"); 18 $this.val("保存"); 19 return false;} 20 $("#noticecontentStr").val(editor.html()); 21 $this.parents('form').ajaxSubmit({ 22 dataType: 'json', 23 type: 'post', 24 iframe:true, 25 cache:false, 26 resetForm:false, 27 beforeSubmit: function() { 28 //获取编辑控件的值 29 $this.parents("form").find(".required[disabled=false]").blur(); 30 if ($this.parents('form').find("font[class='error']").length) { 31 $this.parents('form').find("font[class='error']").eq(0).siblings("input,select,textarea").focus(); 32 return false;}},success: function(data) { 33 $this.parents('form').find("#fileField").hide(); 34 if(data=='-1'){ 35 jAlert("您目前没有权限进行此操作!"); 36 }else if(data=="-2"){ 37 jAlert("系统异常"); 38 }else if(data.flag=="0"){ 39 jAlert("保存成功","系统消息",function (){ 40 window.location.reload(); 41 $this.parents(".dialog").dialog("close");}); 42 ajaxNoticeList(); 43 }else if(data.flag == "1" || data.flag == "2" || data.flag == "3"){ 44 jAlert(data.message);}}});     45 }); 46  47 前台做完开始做后台咯:(先定义一些属性和类,封装起来) 48  49 private File upload;//文件的 50 private String uploadFileName;//文件的名称 51 /** 52 * 返回结果 53 */ 54 private TheResult tr = new TheResult(); 55  56 private static List
allowFileSuffix = new ArrayList
(); 57 public UserSeriviceImpl getLos() { 58 return los; 59 } 60 public void setLos(UserSeriviceImpl los) { 61 this.los = los; 62 } 63 public TheResult getTr() { 64 return tr; 65 } 66 public void setTr(TheResult tr) { 67 this.tr = tr; 68 } //下面开始进入主题 69 //创建公告 70 @RequestMapping("/添加方法.do") 71 public void newCelue(){ 72 TheResult result = null; 73 try {  //调用下面上传文件的代码,用类对象接收(result) 74 result = 上传文件方法(tr);// 先上传文件,如果文件上传成功再保存公告内容 75 if(null != result && "0".equals(result.getFlag())){ 76 77 // 主标题 78 String title = this.getParamNotNnll("title"); 79 //内容 80 String value=this.getParamNotNnll("crmNoticeManage.contentStr"); 81 byte[] valuebyte = value.getBytes();//......很多内容 82 83 Map
cemap = new HashMap
(); 84 cemap.put("id",userId);  //把ID存到map集合里 85 86 87 User u = los.findeuser(cemap); 88 String name=u.getName();//作者 根据id获得其他表的数据 89 90 ZdcjCelue zdcjCelue=new ZdcjCelue(); 91 zdcjCelue.setTitle(title);//主标题 ....存入对象进行添加 92 try { 93 zcService.newCelue(zdcjCelue); 94 result.setMessage("创建成功!"); 95 result.setFlag("0"); 96 } catch (Exception e) { 97 result.setFlag("3"); 98 e.printStackTrace(); 99 }100 }101 } catch (Exception e) {102 result.setFlag("3");103 e.printStackTrace();104 }105 outJSONData(JSONUtils.beanToJson(result));106 }107 108 //开始上传文件咯!109 110 /**111 * 上传附件112 * @return113 */114 public TheResult 上传文件方法(TheResult tr) {115 String cc="celue"; //图片存在服务器上的路径116 String rd="rd";117 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 118 /**页面控件的文件流**/ 119 MultipartFile multipartFile = multipartRequest.getFile("upload"); //upload指的是前端input的name120 String fileName=multipartFile.getOriginalFilename();121 String folderName=cc+"/"+DateUtil.getDataStringDir();  //产生一天的日期字符串,因为图片有可能重复,防止重复122 int fileSize=0;123 String stuffixForFile = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".") + 1);124 if (!getAllowFileSuffix().contains(stuffixForFile)) {
//检查文件是否在允许上传的范围之内125 tr.setFlag("1");126 tr.setMessage("出于安全性考虑,不允许添加此种格式(."+stuffixForFile+")文件。");127 return tr;128 }129 try {130 InputStream is=multipartFile.getInputStream();131 fileSize=is.available();132 if ((fileSize / 1024) > 1024 * 2) {133 tr.setFlag("2");134 tr.setMessage("上传文件大于2MB");135 return tr;136 }137 String ip=GlobalUtil.pps.getProperty("FTP.ip");//上传服务器地址138 String username=GlobalUtil.pps.getProperty("FTP.username");//用户名139 String password=GlobalUtil.pps.getProperty("FTP.password");//密码140 FTPUtil.connServer(ip, username, password,"");141 FTPUtil.createDir(folderName);142 FTPUtil.uploadFile(fileName, is);143 } catch (IOException e) {144 e.printStackTrace();145 tr.setFlag("3");146 tr.setMessage("上传文件异常!");147 return tr;148 }finally{149 FTPUtil.closeServer(); 150 }151 String url="/"+folderName+"/"+fileName;152 tr.setFlag("0");153 tr.setMessage("上传成功!");154 tr.setShowURL(url);155 tr.setRecName(multipartFile.getOriginalFilename());156 return tr;157 }  //下面还有一个方法需要填上158 159 public static List
getAllowFileSuffix() {160 if (allowFileSuffix == null || allowFileSuffix.size() < 1) {161 String stuffix = "gif,jpg,jpeg,png,bmp,swf,flv,swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2";162 if (allowFileSuffix == null) {163 allowFileSuffix = new ArrayList
();164 }165 allowFileSuffix.clear();166 for (String stuf : stuffix.split(",")) {167 allowFileSuffix.add(stuf);168 }169 }170 return allowFileSuffix;171 }  //不要忘记set方法172 173 public static void setAllowFileSuffix(List
allowFileSuffix) {174 ZdcjCelueAction.allowFileSuffix = allowFileSuffix;175 }//至此 已经完成了图片上传。 显示服务器上的图片很简单
一定要对应好服务器图片的位置,176 177 上面说过有一个Result类:↓178 179 package com.kinglo.im.util;180 181 import java.util.List;182 183 /**184 * 处理结果185 * 186 * @author tr 2012-07-17187 */188 public class TheResult {189 190 /**191 * 标记 0--成功,1--异常,2--失败192 */193 private String flag;194 /**195 * 返回消息196 */197 private String message;198 199 /**200 * 刷新页面的访问路径201 */202 private String showURL;203 /**204 * 是否关闭当前层(true--是,false--否)205 */206 private boolean whetherClose;207 208 /**209 * 是否刷新页面(true--是,false--否)210 */211 private boolean whetherRefresh = true;212 213 private String checkbox;214 215 private Integer type;216 private String userid;217 private String subject;218 private String senderName;//发送者姓名219 private String reciveName;//接受者姓名220 private Long sender;//发送者ID221 private Long recive;//接收者ID222 private String text;223 private Integer taskid;224 private String sendName;225 private String recName;226 private String tpid;227 private String agentid;228 private String iscomplete;229 private String username;230 public String getUsername() {231 return username;232 }233 234 public void setUsername(String username) {235 this.username = username;236 }237 238 private String password;239 public String getPassword() {240 return password;241 }242 243 public void setPassword(String password) {244 this.password = password;245 }246 247 public String getNeibuqunid() {248 return neibuqunid;249 }250 251 public void setNeibuqunid(String neibuqunid) {252 this.neibuqunid = neibuqunid;253 }254 255 256 257 public String getWaibuqunid() {258 return waibuqunid;259 }260 261 public void setWaibuqunid(String waibuqunid) {262 this.waibuqunid = waibuqunid;263 }264 265 private String neibuqunid;266 private String waibuqunid;267 private String isCallerRbt;268 /**269 * 当前第几页270 */271 private int currPage = 1;272 /**273 * 当前页显示记录数274 */275 private int pageSize = 10;276 277 private String companyCode;278 279 private String isExtFlag;//是否转分机280 281 private String isJobNumFlag;//是否报工号282 283 private String isJobId;//是否弹屏284 285 286 private String subaccount;287 private String subaccountpwd;288 private String voipid;289 private String voippwd;290 291 public String getTpid() {292 return tpid;293 }294 295 public void setTpid(String tpid) {296 this.tpid = tpid;297 }298 299 public String getFlag() {300 return flag;301 }302 303 public void setFlag(String flag) {304 this.flag = flag;305 }306 307 //这里进行封装get() set()方法308 309 }310 311 /**312 * 图片上传(这个是另一种方法的action)313 */314 @RequestMapping("/uploadImages.do")315 public void uploadImages(){316 try {317 String regExp="jpg|bmp|jpeg|png|gif";318 Pattern pattern=Pattern.compile(regExp,Pattern.CASE_INSENSITIVE+Pattern.MULTILINE);319 System.out.println("ss:"+uploadFileName);320 Matcher matcher=pattern.matcher(uploadFileName);//这个为空if(!matcher.find()){ 321 this.outJSONDataString("{\"error\":1,\"message\":\"请上传正确格式的图片!\"}");}else{322 FileInputStream fis=new FileInputStream(upload);//这个也为空323 if(fis.available()>1536000){324 this.outJSONDataString("{\"error\":1,\"message\":\"每张图片最大不能超过1.5MB!\"}");}else{325 String width=this.getParamNotNnll("width").trim();326 String height=this.getParamNotNnll("height").trim();327 String title=this.getParamNotNnll("title").trim(); 328 String align=this.getParamNotNnll("align").trim();329 String url=request.getRequestURL().toString();330 String path="";//getServletContext().getRealPath("").replace("\\", "\\\\")+"/noticedirectory/"+Context.getCurrentUser().getCompanyCode()+"/temp/"+DateUtil.getDateToString(new Date())+uploadFileName.substring(uploadFileName.lastIndexOf(".")); 331 String imgPath="";//url.substring(0, url.indexOf(getRequest().getContextPath()))+getRequest().getContextPath()+"/noticedirectory/"+Context.getCurrentUser().getCompanyCode()+"/temp/"+DateUtil.getDateToString(new Date())+uploadFileName.substring(uploadFileName.lastIndexOf("."));332 File file =new File(path);333 if(!file.exists()){ try {file.createNewFile();} catch (Exception e) {File dir=new File(file.getParent());dir.mkdirs();file.createNewFile();}}334 FileOutputStream fos=new FileOutputStream(file);335 int len=0;byte[] b=new byte[1024];336 while((len=fis.read(b))!=-1){fos.write(b, 0, len);}fis.close();fos.flush();fos.close();337 this.outStringData("{\"error\":0,\"url\":\""+imgPath+"\",\"path\":\""+path+"\",\"width\":\""+width+"\",\"height\":\""+height+"\",\"title\":\""+title+"\",\"align\":\""+align+"\"}");}}338 } catch (Exception e) {e.printStackTrace();}}

 

转载于:https://www.cnblogs.com/anpieBlog/p/5643133.html

你可能感兴趣的文章
搜索旋转排序数组 II
查看>>
20、docker swarm
查看>>
psp工具软件前景与范围文档
查看>>
day06-三元表达式
查看>>
C# DateTime.Now详细用法
查看>>
Php中"{}"大括号的用法总结(转)
查看>>
JavaScript内存优化
查看>>
BZOJ1059: [ZJOI2007]矩阵游戏(二分图匹配)
查看>>
P3385 【模板】负环
查看>>
URI、URL 和 URN的区别
查看>>
根据表达式序列(前缀、中缀、后缀)构建表达式树
查看>>
mysql性能优化
查看>>
【SqlServer系列】语法定义符号解析
查看>>
Color Length UVA - 1625
查看>>
TLS/SSL
查看>>
zoj2319Beautiful People Dp
查看>>
图片加载 背景色块问题
查看>>
Static Binding (Early Binding) vs Dynamic Binding (Late Binding)
查看>>
搭建git服务器
查看>>
iOS之UIDynamic UI动力学使用步骤
查看>>