1. 首先来个简单的html页面: enctype="multipart/form-data" encoding="multipart/form-data" action="../../后台/后台方法.do" //form表单加上这几个属性 action指向后台添加方法
  2.  
  3. <input type="button" id="uupdatekeyword2" value="修改" onready="true" class="btns submitform"/>
  4. <input type="button" value="取消" id="vcancel" class="btns btnCancel" style="margin-left:10px;"/>
  5. <input type="button" onready="true" value="开始上传" class="btns submitform"/>&nbsp; //开始上传的按钮,主要是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<String> allowFileSuffix = new ArrayList<String>();
  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<String, Object> cemap = new HashMap<String, Object>();
  84. cemap.put("id",userId);  //把ID存到map集合里
  85.  
  86. User u = los.findeuser(cemap);
  87. String name=u.getName();//作者 根据id获得其他表的数据
  88.  
  89. ZdcjCelue zdcjCelue=new ZdcjCelue();
  90. zdcjCelue.setTitle(title);//主标题 ....存入对象进行添加
  91. try {
  92. zcService.newCelue(zdcjCelue);
  93. result.setMessage("创建成功!");
  94. result.setFlag("0");
  95. } catch (Exception e) {
  96. result.setFlag("3");
  97. e.printStackTrace();
  98. }
  99. }
  100. } catch (Exception e) {
  101. result.setFlag("3");
  102. e.printStackTrace();
  103. }
  104. outJSONData(JSONUtils.beanToJson(result));
  105. }
  106.  
  107. //开始上传文件咯!
  108.  
  109. /**
  110. * 上传附件
  111. * @return
  112. */
  113. public TheResult 上传文件方法(TheResult tr) {
  114. String cc="celue"; //图片存在服务器上的路径
  115. String rd="rd";
  116. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  117. /**页面控件的文件流**/
  118. MultipartFile multipartFile = multipartRequest.getFile("upload"); //upload指的是前端input的name
  119. String fileName=multipartFile.getOriginalFilename();
  120. String folderName=cc+"/"+DateUtil.getDataStringDir();  //产生一天的日期字符串,因为图片有可能重复,防止重复
  121. int fileSize=0;
  122. String stuffixForFile = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".") + 1);
  123. if (!getAllowFileSuffix().contains(stuffixForFile)) {//检查文件是否在允许上传的范围之内
  124. tr.setFlag("1");
  125. tr.setMessage("出于安全性考虑,不允许添加此种格式(."+stuffixForFile+")文件。");
  126. return tr;
  127. }
  128. try {
  129. InputStream is=multipartFile.getInputStream();
  130. fileSize=is.available();
  131. if ((fileSize / 1024) > 1024 * 2) {
  132. tr.setFlag("2");
  133. tr.setMessage("上传文件大于2MB");
  134. return tr;
  135. }
  136. String ip=GlobalUtil.pps.getProperty("FTP.ip");//上传服务器地址
  137. String username=GlobalUtil.pps.getProperty("FTP.username");//用户名
  138. String password=GlobalUtil.pps.getProperty("FTP.password");//密码
  139. FTPUtil.connServer(ip, username, password,"");
  140. FTPUtil.createDir(folderName);
  141. FTPUtil.uploadFile(fileName, is);
  142. } catch (IOException e) {
  143. e.printStackTrace();
  144. tr.setFlag("3");
  145. tr.setMessage("上传文件异常!");
  146. return tr;
  147. }finally{
  148. FTPUtil.closeServer();
  149. }
  150. String url="/"+folderName+"/"+fileName;
  151. tr.setFlag("0");
  152. tr.setMessage("上传成功!");
  153. tr.setShowURL(url);
  154. tr.setRecName(multipartFile.getOriginalFilename());
  155. return tr;
  156. }  //下面还有一个方法需要填上
  157.  
  158. public static List<String> getAllowFileSuffix() {
  159. if (allowFileSuffix == null || allowFileSuffix.size() < 1) {
  160. 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";
  161. if (allowFileSuffix == null) {
  162. allowFileSuffix = new ArrayList<String>();
  163. }
  164. allowFileSuffix.clear();
  165. for (String stuf : stuffix.split(",")) {
  166. allowFileSuffix.add(stuf);
  167. }
  168. }
  169. return allowFileSuffix;
  170. }  //不要忘记set方法
  171.  
  172. public static void setAllowFileSuffix(List<String> allowFileSuffix) {
  173. ZdcjCelueAction.allowFileSuffix = allowFileSuffix;
  174. }//至此 已经完成了图片上传。 显示服务器上的图片很简单<img class='img-responsive' src='http://121.41.57.4/images"+comment.coverImg+"'>一定要对应好服务器图片的位置,
  175.  
  176. 上面说过有一个Result类:↓
  177.  
  178. package com.kinglo.im.util;
  179.  
  180. import java.util.List;
  181.  
  182. /**
  183. * 处理结果
  184. *
  185. * @author tr 2012-07-17
  186. */
  187. public class TheResult {
  188.  
  189. /**
  190. * 标记 0--成功,1--异常,2--失败
  191. */
  192. private String flag;
  193. /**
  194. * 返回消息
  195. */
  196. private String message;
  197.  
  198. /**
  199. * 刷新页面的访问路径
  200. */
  201. private String showURL;
  202. /**
  203. * 是否关闭当前层(true--是,false--否)
  204. */
  205. private boolean whetherClose;
  206.  
  207. /**
  208. * 是否刷新页面(true--是,false--否)
  209. */
  210. private boolean whetherRefresh = true;
  211.  
  212. private String checkbox;
  213.  
  214. private Integer type;
  215. private String userid;
  216. private String subject;
  217. private String senderName;//发送者姓名
  218. private String reciveName;//接受者姓名
  219. private Long sender;//发送者ID
  220. private Long recive;//接收者ID
  221. private String text;
  222. private Integer taskid;
  223. private String sendName;
  224. private String recName;
  225. private String tpid;
  226. private String agentid;
  227. private String iscomplete;
  228. private String username;
  229. public String getUsername() {
  230. return username;
  231. }
  232.  
  233. public void setUsername(String username) {
  234. this.username = username;
  235. }
  236.  
  237. private String password;
  238. public String getPassword() {
  239. return password;
  240. }
  241.  
  242. public void setPassword(String password) {
  243. this.password = password;
  244. }
  245.  
  246. public String getNeibuqunid() {
  247. return neibuqunid;
  248. }
  249.  
  250. public void setNeibuqunid(String neibuqunid) {
  251. this.neibuqunid = neibuqunid;
  252. }
  253.  
  254. public String getWaibuqunid() {
  255. return waibuqunid;
  256. }
  257.  
  258. public void setWaibuqunid(String waibuqunid) {
  259. this.waibuqunid = waibuqunid;
  260. }
  261.  
  262. private String neibuqunid;
  263. private String waibuqunid;
  264. private String isCallerRbt;
  265. /**
  266. * 当前第几页
  267. */
  268. private int currPage = 1;
  269. /**
  270. * 当前页显示记录数
  271. */
  272. private int pageSize = 10;
  273.  
  274. private String companyCode;
  275.  
  276. private String isExtFlag;//是否转分机
  277.  
  278. private String isJobNumFlag;//是否报工号
  279.  
  280. private String isJobId;//是否弹屏
  281.  
  282. private String subaccount;
  283. private String subaccountpwd;
  284. private String voipid;
  285. private String voippwd;
  286.  
  287. public String getTpid() {
  288. return tpid;
  289. }
  290.  
  291. public void setTpid(String tpid) {
  292. this.tpid = tpid;
  293. }
  294.  
  295. public String getFlag() {
  296. return flag;
  297. }
  298.  
  299. public void setFlag(String flag) {
  300. this.flag = flag;
  301. }
  302.  
  303. //这里进行封装get() set()方法
  304.  
  305. }
  306.  
  307. /**
  308. * 图片上传(这个是另一种方法的action)
  309. */
  310. @RequestMapping("/uploadImages.do")
  311. public void uploadImages(){
  312. try {
  313. String regExp="jpg|bmp|jpeg|png|gif";
  314. Pattern pattern=Pattern.compile(regExp,Pattern.CASE_INSENSITIVE+Pattern.MULTILINE);
  315. System.out.println("ss:"+uploadFileName);
  316. Matcher matcher=pattern.matcher(uploadFileName);//这个为空if(!matcher.find()){
  317. this.outJSONDataString("{\"error\":1,\"message\":\"请上传正确格式的图片!\"}");}else{
  318. FileInputStream fis=new FileInputStream(upload);//这个也为空
  319. if(fis.available()>1536000){
  320. this.outJSONDataString("{\"error\":1,\"message\":\"每张图片最大不能超过1.5MB!\"}");}else{
  321. String width=this.getParamNotNnll("width").trim();
  322. String height=this.getParamNotNnll("height").trim();
  323. String title=this.getParamNotNnll("title").trim();
  324. String align=this.getParamNotNnll("align").trim();
  325. String url=request.getRequestURL().toString();
  326. String path="";//getServletContext().getRealPath("").replace("\\", "\\\\")+"/noticedirectory/"+Context.getCurrentUser().getCompanyCode()+"/temp/"+DateUtil.getDateToString(new Date())+uploadFileName.substring(uploadFileName.lastIndexOf("."));
  327. String imgPath="";//url.substring(0, url.indexOf(getRequest().getContextPath()))+getRequest().getContextPath()+"/noticedirectory/"+Context.getCurrentUser().getCompanyCode()+"/temp/"+DateUtil.getDateToString(new Date())+uploadFileName.substring(uploadFileName.lastIndexOf("."));
  328. File file =new File(path);
  329. if(!file.exists()){try {file.createNewFile();} catch (Exception e) {File dir=new File(file.getParent());dir.mkdirs();file.createNewFile();}}
  330. FileOutputStream fos=new FileOutputStream(file);
  331. int len=0;byte[] b=new byte[1024];
  332. while((len=fis.read(b))!=-1){fos.write(b, 0, len);}fis.close();fos.flush();fos.close();
  333. this.outStringData("{\"error\":0,\"url\":\""+imgPath+"\",\"path\":\""+path+"\",\"width\":\""+width+"\",\"height\":\""+height+"\",\"title\":\""+title+"\",\"align\":\""+align+"\"}");}}
  334. } catch (Exception e) {e.printStackTrace();}}

根目录97 <input file>标签,把图片上传到服务器(跟增删改查一起实现)的更多相关文章

  1. MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器

    MVC图片上传.浏览.删除   1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...

  2. php form 图片上传至服务器上

    本文章也是写给自己看的,因为写的很简洁,连判断都没有,只是直接实现了能上传的功能. 前台: <form action="upload.php" method="PO ...

  3. 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,

    一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...

  4. h5 input file ajax实现文件上传

    <input type="file" accept="image/*" height="0" class="file_inp ...

  5. ckeditor如何能实现直接粘贴把图片上传到服务器中?

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

  6. Express+MySQL实现图片上传到服务器并把路径保存到数据库中

    demo准备:mysql5.7.20 express4.0 处理图片文件的中间件Multer 先搭建服务器并展示html页面 const express = require("express ...

  7. word图片上传到服务器

    参考:http://blog.ncmem.com/wordpress/2019/08/07/word%e5%9b%be%e7%89%87%e4%b8%8a%e4%bc%a0%e5%88%b0%e6%9 ...

  8. 模板不存在:./xx 错误位置 FILE: LINE:110 (thinkphp上传至服务器后模板无法解析原因)

    thinkphp上传至服务器后模板无法解析原因 前几日做好的响应式静态页面上传至虚拟空间,打开网址地址出现: 模板不存在:./App/Admin/View/Config/customerService ...

  9. input(file)样式修改及上传文件名显示

    实现思路: a标签包裹input元素 设置a标签为上传按钮的样式,相对定位 设置input为透明,绝对定位,覆盖到a上面 效果:看到的按钮是a的样式,点击时实际是点击input元素.样式和功能都具备 ...

随机推荐

  1. VS 远程调试之 “The visual studio remote debugger does not support this edition of windows”

    The error message "The visual studio remote debugger does not support this edition of windows&q ...

  2. Bigendian 奇数内存地址取整形crash

    在大端机器(solaris-sparc,hpux-hppa)上从奇数内存地址取一个整形(2 or 4 bytes)会崩溃.如: unsigned short Res = *(unsigned shor ...

  3. Shell中取得文件的最后修改时间

    stat -c %y file 取得修改日期 -,-,-

  4. Python-8 元组tuple

    #1 特殊的列表:元组 元组中的元素不可改变 #2 创建.访问 >>> tuple1=(1,2,3) >>> tuple1=1,2,3 >>> t ...

  5. 后台使用Spring MVC 4.15 版本 通过 ajaxFileUpload plugin插件上传文件相应时引起的一个小问题,Chrome、Firefox中出现SyntaxError:unexpected token <

    html: 使用ajaxFileUpload插件做文件上传时,后台返回json格式的数据,js代码如下: 接下来,把结果错误信息打印出来: 先在网上找了下解决办法方案,stackoverflow上有说 ...

  6. Chrome Dev Tools :成为更高效的开发人员

    原文出处 http://blog.jobbole.com/22065/ 实时CSS Style编辑 选择一个Dom,可以对Dom进行编辑和操作,实时修改Css Style, 同时CssStyle可以保 ...

  7. WS+MQ+WCF+EF(Code First)

    前言 有段时间没有更新博文了,一直在忙工作很少有时间静下心来继续研究点东西,说来也惭愧,归咎原因最主要的还是因为懒惰.空想也是不管用的,有时候很多想法被扼杀到了摇篮里,还没开始做就放弃了,这是多数人会 ...

  8. 输入m乘法表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 关于GPL的一些知识

    1.什么是GPL GPL许可协议(GNU General Public License):只要软件中包含有其他GPL协议的产品或代码,那么该软件就必须也采用GPL许可协议且开源及免费.具有以下特点: ...

  10. Java白皮书的关键术语

    “白皮书”可以在http://www.oracle.com/technetwork/java/langenv-140151.html上找到. 1.简单性. 2.面向对象. 3.网络技能(Network ...