文件上传-通过commons_FIleUpload实现
来源:互联网 发布:淘宝店铺装修大学教程 编辑:程序博客网 时间:2024/05/30 07:12
一、Commons-FileUpload
简介:
Apache提供的实现文件上传的组件;免费的、开源的。
组件特点:
- 使用简单:可以方便的嵌入到JSP页面中,缩写少量代码就可以完成文件上传功能。
- 能够全程控制上传内容。
- 能够对上传文件大小、类型进行控制。
FileItem接口:
- 封装表单元素的数据。(不同类型的表单元素分别对应一个FileItem对象)
- 具有对表单内容处理的方法。
FileItemFactory接口:用于构建FileItem实例。
DiskFileItemFactory类:是FileItemFactory接口实现类。
FileItemFactory factory= new DiskFileItemFactory();
ServletFileUpload类:
1.组件的核心类。
2.封装表单元素并以集合方式返回。
3.语法: public ServletFileUpload(FileItemFactory fileitemfactory)
二、.准备jar包
commons-fileupload.jar
commons-io.jar
三、 form表单
//文件:add_news.jsp//表单里enctype="multipart/form-data"代表的是(文本、文件)多重提交//必须 method=”post” ,如果get,地址栏里文件参数会非常非常长<form action="../util/do_add_news.jsp" method="post" enctype="multipart/form-data" onsubmit="return check()">
// input的type=”file”意味着文件上传框<input name="file" type="file" class="opt_input" />
4.多重提交的处理
//文件:do_add_news.jsp提交的时候,要判断哪个参数是文件,哪个参数是文本 如果是文本,直接向数据库保存就可以了 如果是文件,要获得文件本身,上传到服务器中<%NewsService ns=new NewsService();News news=new News();request.setCharacterEncoding("utf-8");//判断提交的表单是否包含上传文件的清单boolean isMultiPart=ServletFileUpload.isMultipartContent(request);String uname="";int age=0;if(isMultiPart){ //如果是多重提交,获取全部表单元素的list FileItemFactory ff= new DiskFileItemFactory(); ServletFileUpload sfu=new ServletFileUpload(ff); List<FileItem> itemList=sfu.parseRequest(request); Iterator<FileItem> it=itemList.iterator(); //遍历表单元素 while(it.hasNext()){ FileItem item=it.next(); //如果是文本的话,封装到对象内 if(item.isFormField()){ if(item.getFieldName().equals("ntid")){ int ntid=Integer.parseInt(item.getString("utf-8")); news.setNtid(ntid); } if(item.getFieldName().equals("ntitle")){ news.setNtitle(item.getString("utf-8")); } if(item.getFieldName().equals("nauthor")){ news.setNauthor(item.getString("utf-8")); } if(item.getFieldName().equals("nsummary")){ news.setNsummary(item.getString("utf-8")); } if(item.getFieldName().equals("ncontent")){ news.setNcontent(item.getString("utf-8")); } if(item.getFieldName().equals("npicpath")){ news.setNpicpath(item.getString("utf-8")); } }else{ //如果是非文本(即文件),则获取文件名字并保存文件到服务器 String fileName=item.getName(); String savePath=request.getSession().getServletContext().getRealPath("/upload"); news.setNpicpath(fileName); File fileSave= ictures\Sample Pictures\Chrysanthemum.jpgnew File(savePath,fileName); System.out.println(fileName); System.out.println(savePath); item.write(fileSave); } }}news.setNcreatedate("2016-12-01 10:36");news.setNmodifydate("2016-12-01 10:36");int result=ns.addNews(news);//response.sendRedirect("../newspages/admin.jsp");%>
5.隐患
用IE浏览器提交文件,fileName会带上路径,路径含有“/”因此注定不能保存在服务器。可以提前对fileName进行判断,如果含有“/”,将最后一个“/”之前的部分截去,保留文件名部分。
0 0
- 文件上传-通过commons_FIleUpload实现
- struts2文件上传commons_fileUpload
- commons_fileupload组件 简单文件上传
- Commons_FileUpload
- Struts2通过commons-fileupload实现文件上传
- Struts2通过commons-fileupload实现文件上传
- 通过Http协议实现文件上传
- 通过Struts实现文件上传详解
- Struts2通过commons-fileupload实现文件上传
- 通过iframe实现ajax方式上传文件
- 通过java实现上传文件到hadoop
- 通过Http协议实现文件上传
- android通过http协议实现文件上传
- 通过HTTP协议实现文件上传
- 通过html5 File、XMLHttpRequest实现文件上传
- 通过FileUpload实现文件的上传
- SpringMVC 通过get请求实现文件上传
- 通过commons-fileupload实现文件上传
- 使用py2exe对Python文件进行封装生成exe文件
- iOS下JS与原生OC互相调用(总结)
- Hadoop+HBase+Spark伪分布式整合部署(mac)
- HTTP Status 500 - Error instantiating servlet class的问题解决
- ubuntu下安装Android sdk
- 文件上传-通过commons_FIleUpload实现
- 2016年腾讯校园招聘面试经验
- 一些环境配置问题
- 进化算法 遗传算法与粒子群算法之间的比较
- 如何处理大量数据并发操作
- Android makefile文件调试方法
- 不使用软件及硬件,电脑启动wifi,解决移动端通过电脑绑定host,无法访问服务器问题
- Flask学习总结笔记(1)-- 环境配置
- Nagios的启动与停止 查看初步配置情况