这篇文章主要介绍了SSM框架JSP中集成easyui前端ui项目开发示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

这篇文章主要为大家详细介绍了JSP实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了JSP实现文件上传功能的具体代码,供大家参考,具体内容如下

一、准备部分
需要fileupload.jar与io.jar包共同完成。构建完成路径后可继续。

资源地址

二、页面部分

  1. <form action="UploadServlet" method="post" enctype="multipart/form-data">
  2. 学号:<input type="text" name="sno"/><br/>
  3. 姓名:<input type="text" name="sname"/><br/>
  4. 上传照片:<input type="file" name="spicture"/><br/>
  5. <input type="submit" value="注册"/>
  6. </form>

注意:

1.文件上传必须要使用post,以避免用get方法时传输总量超过搜索框所能承载最大字符数。

2.必须加入enctype=”multipart.form-data”字段

3.文件处需用“file”

三、Servlet部分

  1. package webtest;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import org.apache.commons.fileupload.FileItem;
  12. import org.apache.commons.fileupload.FileItemFactory;
  13. import org.apache.commons.fileupload.FileUploadBase;
  14. import org.apache.commons.fileupload.FileUploadException;
  15. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  16. import org.apache.commons.fileupload.servlet.ServletFileUpload;
  17. /**
  18. * Servlet implementation class UploadServlet
  19. */
  20. @WebServlet("/UploadServlet")
  21. public class UploadServlet extends HttpServlet {
  22. private static final long serialVersionUID = 1L;
  23. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  24. throws ServletException, IOException {
  25. request.setCharacterEncoding("utf-8");// 请求编码处理,传输时
  26. response.setCharacterEncoding("utf-8");// 响应编码处理,传输时
  27. response.setContentType("utf-8");// 响应编码处理,显示时
  28. boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判断是否有entype="multipart/form-data"部分
  29. if (isMultipart) {
  30. try {
  31. FileItemFactory factory = new DiskFileItemFactory();
  32. ServletFileUpload upload = new ServletFileUpload(factory);
  33. //设置上传时的内存缓冲区大小,超出时写入临时文件 10kb
  34. ((DiskFileItemFactory) factory).setSizeThreshold(10240);//单位byte
  35. //设置临时文件目录,防止系统空间不足
  36. ((DiskFileItemFactory) factory).setRepository(new File(request.getSession().getServletContext().getRealPath("Uploadtemp")));//动态获取Uploadtemp文件夹位于该项目中的位置
  37. //控制上传单个文件的最大值 20kb
  38. upload.setSizeMax(20480);//单位byte
  39. List<FileItem> items = upload.parseRequest(request);// 解析form中的所有请求字段,并保存在item中
  40. Iterator<FileItem> iter = items.iterator();
  41. while (iter.hasNext()) {
  42. // 解析时无顺序,因此需根据名字查找
  43. FileItem item = iter.next();
  44. if (item.isFormField()) {//非文件数据
  45. String itemName = item.getFieldName();//获取非文件的范围数据名
  46. if (itemName.equals("sno")) {
  47. int sno = -1;
  48. sno = Integer.parseInt(item.getString("utf-8"));
  49. }
  50. else if (itemName.equals("sname")) {
  51. String sname = null;
  52. sname = item.getString("utf-8");
  53. }
  54. else {
  55. System.out.println("其他字段...");
  56. }
  57. } else {//文件上传
  58. String fileName = item.getName();//获取文件范围数据。路径及其名称
  59. //判断文件类型
  60. String ext = fileName.substring(fileName.indexOf(".")+1);
  61. if(!(ext.equals("png")||ext.equals("gif")||ext.equals("jpg"))) {
  62. System.out.println("仅支持png.gif,jpg类型文件");
  63. return ;
  64. }
  65. String path = request.getSession().getServletContext().getRealPath("Upload");//动态获取Upload文件夹位于该项目中的位置
  66. File file = new File(path,fileName);
  67. item.write(file);//定义上传路径,多为服务器路径
  68. System.out.println(fileName+"上传成功");
  69. }
  70. item.delete();//删除临时目录的文件
  71. }
  72. }
  73. catch(FileUploadBase.SizeLimitExceededException e) {
  74. System.out.println("最大20KB");
  75. }
  76. catch (FileUploadException e) {
  77. // TODO Auto-generated catch block
  78. e.printStackTrace();
  79. }
  80. catch (Exception e) {
  81. // TODO Auto-generated catch block
  82. e.printStackTrace();
  83. }
  84. }
  85. }
  86. /**
  87. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
  88. * response)
  89. */
  90. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  91. throws ServletException, IOException {
  92. // TODO Auto-generated method stub
  93. doGet(request, response);
  94. }
  95. }

注:

1.若该处标红且鼠标悬停后未找到包,则可以使用”alt”+”/“组合键选择下图第一个类来导入。

2.由于若Upload与Uploadtemp文件存放于tomcat对应的项目下,每一次通过eclipse更新代码,会将eclipse下代码直接覆盖,因而两个文件夹会直接被覆盖掉。可以在eclipse中新建,或通过绝对/相对路径于其他文件夹中来设置。

3.临时文件中的数据会保留很短的时间,添加sleep让程序休眠也许可以看到。即使无item.delete(),在整个会话完成后,临时文件也会被删除。

4.若报错无法找到文件,请尝试用浏览器若谷歌进行操作,而不是用Eclipse自带的。

更多相关文章

  1. Android将Uri转化为文件路径的方法
  2. 解决TabLayout+viewpager 滑动切换时 布局文件不是从头显示
  3. Android文件操作IO技术
  4. Android(安卓)LK Bootlaoder启动概览
  5. android 文件目录权限
  6. 【Android】Activity与服务Service绑定
  7. Android(安卓)Studio中的mipmap和drawable
  8. Android文件图片上传的详细讲解(三)---模式回调类
  9. android LayoutInflater.inflate()的参数及其功能

随机推荐

  1. 在 Android(安卓)上使用 XML 和 JSON,第 2
  2. android解析json数组
  3. android 开发中遇到错误及解决办法总结(
  4. Android使用WCF的服务程序之入门
  5. Android Studio插件
  6. android网站汇集
  7. android 读取mac地址
  8. Android软键盘(四)软件盘弹出布局上移的问
  9. Android 新加几个开源项目
  10. 系统重置