使用commons-fileupload的文件上传
来源:互联网 发布:盛势网络剧日常花絮 编辑:程序博客网 时间:2024/06/17 00:54
一、JSP表单处理要点
get
get方法是浏览器默认传递参数的方法,敏感信息(eg:密码等)不建议使用get方法。
使用get时,传输数据的大小有限制 (注意不是参数的个数有限制),最大为1024字节。
post
敏感信息可以通过post方法传递,post提交数据是隐式的。
post提交数据是不可见的,而get是在url里面传递的。
JSP使用getParameter()来获得传递的参数,getInputStream()方法用来处理客户端的二进制数据流的请求。
二、jar包的准备
http://mirrors.hust.edu.cn/apache/commons/
下载commons-fileupload包和commons-io包
粘贴至/WebContent/WEB-INF/lib下
三、代码
(一)index.jsp
<body><form action="upload" method="post" enctype="multipart/form-data"><input type="text" name="username"><hr><input type="file" name="upfile"><hr><input type="submit" value="提交"></form></body>
(二)Upload.class
@WebServlet("/upload")public class Upload extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("GBK"); //检查当前表单是否以二进制流的形式上传 boolean isMultipart=ServletFileUpload.isMultipartContent(request); if(isMultipart){ //为文件创建工厂 FileItemFactory factory=new DiskFileItemFactory(); //创建一个新的文件上传处理 ServletFileUpload upload=new ServletFileUpload(factory); //设置上传文件的最大size upload.setSizeMax(30*1024*1024); try { List<FileItem> items=upload.parseRequest(request); Iterator<FileItem> iter=items.iterator(); while(iter.hasNext()){ FileItem item=iter.next(); //判断是否为表单域(文本框,单选,多选,下拉列表等) if(item.isFormField()){// System.out.println(item.getName());//文件名 此处获取不到// System.out.println(item.getSize());//获取大小// System.out.println(item.getContentType());//获取内容类型 此处获取不到// System.out.println(item.getFieldName());//获取表单input的name// System.out.println(item.getString());//获取文件内容 此处获取不到 }else{// System.out.println(item.getName());//文件名// System.out.println(item.getSize());//获取大小// System.out.println(item.getContentType());//获取内容类型// System.out.println(item.getFieldName());//获取表单input的name// System.out.println(item.getString("GBK"));//获取文件内容 //获取当前工程相对路径(准备将上传的文件保存到这个路径下) ServletContext application = this.getServletContext(); String realPath = application.getRealPath("/upfile");//upfile为创建在WebContent下的自定义文件夹 //根据浏览器的不同 item.getName()获取到的可能是文件名 也可能是路径+文件名 此处无差别处理一下 int index=item.getName().lastIndexOf(File.separator);//File.separator 动态获取分隔符 String filename=item.getName(); filename=filename.substring(filename.lastIndexOf(File.separator)+1); try { item.write(new File(realPath+File.separator+filename)); } catch (Exception e) { request.getRequestDispatcher("fail.jsp").forward(request,response); } request.getRequestDispatcher("success.jsp").forward(request, response);; } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
0 0
- commons-fileupload上传文件的使用
- 使用commons-fileupload实现文件的上传
- 使用commons-fileupload的文件上传
- 使用commons fileupload 上传文件
- 使用 Commons-fileupload 上传文件
- 使用commons-fileupload上传文件
- 使用 Commons-fileupload 上传文件
- Commons-fileupload 文件的上传
- 使用apache的commons-fileupload实现多文件上传
- 使用Commons-fileupload组件实现文件上传的注意细节
- 使用commons-fileupload.jar servlet上传文件 遇到的问题
- 文件上传 commons-FileUpload
- Commons FileUpload上传文件
- Commons FileUpload上传文件
- commons-fileupload-文件上传
- commons fileupload 文件上传
- commons-fileupload上传文件
- 文件上传 commons-fileupload
- HashSet,TreeSet和LinkedHashSet的区别
- 深入理解JAVA序列化
- Java中的冒泡排序
- hadoop的学习笔记(入门版)(应试版)(hadoop实战精华)和一点hadoop相关资料
- 80-进程间传递描述符(策略)
- 使用commons-fileupload的文件上传
- 第五次实验
- HDU 5491 The Next【】
- 【Java基础】泛型记录概要
- html5 canvas 实现简单绘制折线图
- spring cloud放弃系列之--1-config
- 完美实现Python2和Python3共存
- 《Android源码设计模式解析与实战》读书笔记(四)——原型模式
- bootstrap 弹出框,提示框。