`

图片上传最终版本

阅读更多
  1. SERVLET
  2. packagecom.bjsxt.shopping.servlet;
  3. importjava.io.File;
  4. importjava.io.IOException;
  5. importjava.io.PrintWriter;
  6. importjava.util.Iterator;
  7. importjava.util.List;
  8. importjavax.servlet.ServletConfig;
  9. importjavax.servlet.ServletException;
  10. importjavax.servlet.http.HttpServlet;
  11. importjavax.servlet.http.HttpServletRequest;
  12. importjavax.servlet.http.HttpServletResponse;
  13. importorg.apache.commons.fileupload.FileItem;
  14. importorg.apache.commons.fileupload.FileUploadException;
  15. importorg.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
  16. importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
  17. importorg.apache.commons.fileupload.servlet.ServletFileUpload;
  18. publicclassFileUploadServletextendsHttpServlet
  19. {
  20. //定义成员变量来记录上传的路径
  21. privateStringupLoadPath="";
  22. @Override
  23. //重写init(ServletConfigconfig)方法(不是voidinit())来取得WEB.XML的值
  24. publicvoidinit(ServletConfigconfig)throwsServletException
  25. {
  26. this.upLoadPath=config.getInitParameter("upload");
  27. }
  28. privatestaticfinallongserialVersionUID=1L;
  29. publicFileUploadServlet()
  30. {
  31. super();
  32. }
  33. protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException
  34. {
  35. this.doPost(request,response);
  36. }
  37. protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException
  38. {
  39. request.setCharacterEncoding("utf-8");
  40. intid=-1;
  41. finallongMAX_SIZE=300*1024*1024;//设置上传文件最大值
  42. //允许上传的文件格式的列表
  43. finalString[]allowedExt=newString[]{"jpg","jpeg","gif","txt","doc","mp3","wma","m4a","rar","zip"};
  44. response.setContentType("text/html");
  45. //设置字符编码为UTF-8,统一编码,处理出现乱码问题
  46. response.setCharacterEncoding("UTF-8");
  47. //实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
  48. DiskFileItemFactorydfif=newDiskFileItemFactory();
  49. dfif.setSizeThreshold(4096);//设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
  50. dfif.setRepository(newFile(request.getRealPath("/")+"ImagesUploadTemp"));//设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
  51. //用以上工厂实例化上传组件
  52. ServletFileUploadsfu=newServletFileUpload(dfif);
  53. //设置最大上传大小
  54. sfu.setSizeMax(MAX_SIZE);
  55. PrintWriterout=response.getWriter();
  56. //从request得到所有上传域的列表
  57. ListfileList=null;
  58. try
  59. {
  60. fileList=sfu.parseRequest(request);
  61. }catch(FileUploadExceptione)
  62. {//处理文件尺寸过大异常
  63. if(einstanceofSizeLimitExceededException)
  64. {
  65. out.println("文件尺寸超过规定大小:"+MAX_SIZE+"字节<p/>");
  66. out.println("<ahref=\"./admin/manager/productlist.jsp\">返回</a>");
  67. return;
  68. }
  69. e.printStackTrace();
  70. }
  71. //没有文件上传
  72. if(fileList==null||fileList.size()==0)
  73. {
  74. out.println("请选择上传文件<p/>");
  75. out.println("<ahref=\"./admin/manager/productlist.jsp\">返回</a>");
  76. return;
  77. }
  78. //得到所有上传的文件
  79. IteratorfileItr=fileList.iterator();
  80. //循环处理所有文件
  81. while(fileItr.hasNext())
  82. {
  83. FileItemfileItem=null;
  84. Stringpath=null;
  85. longsize=0;
  86. //得到当前文件
  87. fileItem=(FileItem)fileItr.next();
  88. //忽略简单form字段而不是上传域的文件域(<inputtype="text"/>等)
  89. if(fileItem!=null&&fileItem.isFormField())
  90. {
  91. if(fileItem.getFieldName().equals("id"))
  92. {
  93. id=Integer.parseInt(fileItem.getString());
  94. }
  95. }
  96. if(fileItem!=null&&!fileItem.isFormField())
  97. {
  98. //得到文件的完整路径
  99. path=fileItem.getName();
  100. //得到文件的大小
  101. size=fileItem.getSize();
  102. if("".equals(path)||size==0)
  103. {
  104. out.println("请选择上传文件<p/>");
  105. out.println("<ahref=\"./admin/manager/productlist.jsp\">返回</a>");
  106. return;
  107. }
  108. //得到去除路径的文件名
  109. Stringt_name=path.substring(path.lastIndexOf("\\")+1);
  110. //得到文件的扩展名(无扩展名时将得到全名)
  111. Stringt_ext=t_name.substring(t_name.lastIndexOf(".")+1);
  112. //拒绝接受规定文件格式之外的文件类型
  113. intallowFlag=0;
  114. intallowedExtCount=allowedExt.length;
  115. for(;allowFlag<allowedExtCount;allowFlag++)
  116. {
  117. if(allowedExt[allowFlag].equals(t_ext))
  118. break;
  119. }
  120. if(allowFlag==allowedExtCount)
  121. {
  122. out.println("请上传以下类型的文件<p/>");
  123. for(allowFlag=0;allowFlag<allowedExtCount;allowFlag++)
  124. out.println("*."+allowedExt[allowFlag]+"");
  125. out.println("<p/><ahref=\"./admin/manager/productlist.jsp\">返回</a>");
  126. return;
  127. }
  128. //longnow=System.currentTimeMillis();
  129. //根据系统时间生成上传后保存的文件名
  130. //Stringprefix=String.valueOf(now);
  131. //保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下
  132. //Stringu_name=request.getRealPath("/")+"ImagesUploaded/"
  133. //+prefix+"."+t_ext;
  134. //Stringfilename=t_name;
  135. //System.out.println(t_name);
  136. try
  137. {
  138. //保存文件到C:\\upload目录下
  139. //统一将文件的扩展名改为 jpg 方便在页面中显示
  140. fileItem.write(newFile(upLoadPath+id+"."+"jpg"));
  141. //System.out.println(filename);
  142. out.println("文件上传成功.已保存到:"+upLoadPath+id+"."+"jpg"+"文件大小:"+size+"字节<p/>");
  143. out.println("<ahref=\"./admin/manager/productlist.jsp\">继续上传</a>");
  144. }catch(Exceptione)
  145. {
  146. e.printStackTrace();
  147. }
  148. }
  149. }
  150. }
  151. }
  152. WEB.XML中写入下面的内容:
  153. <servlet>
  154. <description>ThisisthedescriptionofmyJ2EEcomponent</description>
  155. <display-name>ThisisthedisplaynameofmyJ2EEcomponent</display-name>
  156. <servlet-name>FileUploadServlet</servlet-name>
  157. <servlet-class>com.bjsxt.shopping.servlet.FileUploadServlet</servlet-class>
  158. <init-param>
  159. <param-name>upload</param-name>
  160. <param-value>E:\\workspace\\MyProjest\\Shopping\\WebRoot\\images\\product\\</param-value>
  161. </init-param>
  162. </servlet>
  163. 其实最好的方法是增加一下属性文件,把要上传的路径写到该文件中,要上传时再从中读取这个路径
分享到:
评论

相关推荐

    swfupload图片上传插件制作图片批量上传和单个图片上传代码

    SWFUpload是一款经典的JavaScript与Flash结合的文件上传插件,尤其适用于处理图片上传。它允许用户在网页上实现批量和单个图片的上传功能,提高了用户体验,并且在处理大量文件时,比传统的表单提交方式更为高效。...

    图片上传前预览和操作图片

    在IT行业中,图片上传是网页应用中常见的功能之一,尤其在社交网络、博客系统或电商平台等,用户常常需要上传图片来展示内容。"图片上传前预览和操作图片"这个主题涉及的技术点主要包括图片预览、图片操作以及上传...

    图片上传样式美化

    在IT行业中,图片上传是网页和应用程序中常见的一项功能,特别是在社交媒体、电商平台、内容创作平台等。"图片上传样式美化"是指通过各种技术手段优化图片上传界面,使其更具吸引力,提高用户体验。以下将详细探讨这...

    UEditor图片上传到后台

    1. 预览:UEditor在图片上传过程中会生成一个临时的本地URL,用户可以在编辑器中预览图片,直到服务器返回最终的URL。 2. 错误处理:如果上传失败,UEditor会显示错误提示。开发者可以自定义错误处理函数,根据...

    Base64图片上传,Android图片上传的利器

    在Android应用开发中,图片上传是一项常见的功能,但直接上传图片文件可能会遇到各种编码问题,如格式不兼容、网络传输中的数据损坏等。为了解决这些问题,开发者常常选择将图片转换为Base64编码后再进行上传。Base...

    多图片上传程序,带源码

    在IT行业中,多图片上传程序是一种常见的功能,尤其在社交媒体、电子商务、内容管理系统等网站上。这个程序提供了用户一次上传多个图片的能力,极大地提升了用户体验。本文将深入探讨多图片上传功能的技术实现,以及...

    PHP多图片上传

    在这个场景中,我们使用AJAX(Asynchronous JavaScript and XML)和jQuery库来实现无刷新的图片上传,提供更好的用户体验。 AJAX是一种在无需重新加载整个网页的情况下更新部分网页的技术。通过JavaScript,我们...

    java处理上传后的图片

    #### 一、图片上传及处理概述 在现代Web应用中,用户上传图片的功能十分常见。为了优化用户体验并减轻服务器存储压力,通常会在图片上传后进行一系列处理,如压缩、缩放等。本文将重点介绍如何使用Java语言对上传的...

    java开发的图片上传工具

    本项目是一个基于Java开发的图片上传工具,旨在提供一种高效、安全且易于使用的解决方案,帮助用户实现网络上的图片资源上传功能。下面我们将深入探讨这个工具涉及到的核心知识点。 1. **Java Servlet与HTTP请求...

    JSP实现将图片上传到数据库

    【JSP实现将图片上传到数据库】的知识点涵盖了图片上传的基本原理、文件上传组件的使用、JSP中处理图片数据的流程以及服务器端文件的存储形式。以下是详细说明: 1. **图片上传原理**: 图片上传是客户端通过Web...

    多图片上传系统

    在构建一个多图片上传系统时,我们需要考虑许多关键技术和最佳实践。这个系统旨在提供用户友好的界面,同时确保数据的安全性和高效性。以下是一些核心知识点的详细说明: 1. **前端界面设计**:多图片上传系统的第...

    asp图片上传无错版

    本资源"asp图片上传无错版"提供了一个经过调试、稳定运行的图片上传解决方案。 首先,我们需要理解ASP图片上传的基本流程: 1. **HTML表单设计**:创建一个包含`&lt;input type="file"&gt;`的表单,用户可以通过这个字段...

    vue2图片上传组件

    7. **API集成**:图片上传组件最终需要与后端接口进行通信,将文件发送到服务器。这涉及到HTTP请求,通常是POST请求,可能还需要设置请求头和表单数据。 8. **状态管理**:组件需要维护图片的上传状态(如未上传、...

    asp视频及文件图片上传

    这个“asp视频及文件图片上传”主题涵盖了如何在ASP环境中处理用户通过表单提交的多媒体文件,包括视频、图片和其他类型的文件。下面将详细介绍这一过程涉及的关键知识点。 1. **ASP基础**:ASP是一种服务器端脚本...

    Jquery 表单验证+本地图片上传-切割-预览

    在本项目中,"Jquery 表单验证+本地图片上传-切割-预览"是一个综合性的前端开发实例,它涵盖了几个重要的JavaScript库和技术,包括jQuery、表单验证、图片上传、图片切割以及预览功能。以下是这些知识点的详细解释:...

    图片上传成功jsp页面不刷新问题

    在开发涉及图片上传功能的Web应用时,经常会遇到上传成功后页面不自动刷新的问题。这通常是因为浏览器缓存了图片请求,使得即便图片内容已经更新,浏览器显示的还是缓存中的旧图片。为了解决这个问题,通常会通过在...

    手写单张图片上传ssh

    在IT行业中,手写单张图片上传功能是一个常见的需求,特别是在网页应用开发中。这个功能通常涉及前端用户界面、后端服务器处理以及可能的数据存储。在这个场景中,使用jsp(JavaServer Pages)作为前端页面,action...

    移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能

    该功能主要针对移动端用户,提供了便捷的图片上传、压缩及旋转处理。以下是一些相关知识点: 1. Vue.js框架:Vue是一套用于构建用户界面的渐进式JavaScript框架,主要用于开发单页面应用程序(SPA)。它允许开发者...

    java图片ssm上传.rar

    这个“java图片ssm上传.rar”压缩包文件包含了一个使用SSM实现图片上传功能的示例项目。下面,我们将深入探讨这个主题,讲解如何在Java环境下,利用SSM框架进行图片上传,并涉及相关技术点。 1. **Spring框架**:...

    上传图片截取JS

    在IT领域,图片上传和截取是常见的交互功能,尤其在网络应用中,用户可能需要上传自己的照片或截图来完成各种操作。"上传图片截取JS"这个标题所指的,就是利用JavaScript(简称JS)技术实现图片上传和图片裁剪的功能...

Global site tag (gtag.js) - Google Analytics