使用FileUpload jar包上传文件的例子。
来源:互联网 发布:搜狗seo关键词优化 编辑:程序博客网 时间:2024/05/20 11:36
工具包:使用必须导入 commons-fileupload-1.2.1.jar 和 commons-io-1.4.jar(导入这个是因为fileupload包依赖于它)
下载地址:http://download.csdn.net/detail/qqahanson/8260931
直接贴代码了:
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <script type="text/javascript"> function add(){ var div = document.getElementById("addDiv"); div.innerHTML+="<div>上传文件<input type='file' name='upload'/><input type='button' id='delbut' value='删除' onclick='del(this)' /><br></div>"; } function del(obj){ //删除这一行 var div = obj.parentNode; div.parentNode.removeChild(div); } </script> </head> <body> <form action="${pageContext.request.contextPath }/servlet/Update" method="post" enctype="multipart/form-data"> 文件信息<input type="text" name="info"/> <input type="button" id="but" value="加一个" onclick="add()"/><br> 上传文件<input type='file' name='upload'/><br> <div id="addDiv"></div> <input type="submit" value="上传"/> </form> </body></html>
处理上传servlet
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.List;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.ProgressListener;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class Update extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//传输长度int l = request.getIntHeader("Content-Length");try {String info = request.getParameter("info");System.out.println(info);// 创建工厂DiskFileItemFactory factory = new DiskFileItemFactory();//设置内存缓存上传文件的大小 超出这个值就放入硬件缓存factory.setSizeThreshold(1024 * 10);//设置上传文件在服务器缓存路径factory.setRepository(new File(this.getServletContext().getRealPath("/temp")));final Long time = System.currentTimeMillis();// 利用工厂创建上传核心类ServletFileUpload upload = new ServletFileUpload(factory);//监听器 可以用于做进度条等upload.setProgressListener(new ProgressListener(){//bytesRead:当前已经上传完成的字节数//contentLength:需要上传的字节(总的字节数)//items:当前上传的内容在提交上来的表单中的位置,是第几个public void update(long bytesRead, long contentLength, int items) {//System.out.print("已经读取到的字节数:"+bytesRead+" 共有字节数:"+contentLength+" 在表单中的位置:"+items);System.out.print(" 上传进度"+(double)bytesRead/contentLength);Long time2 = System.currentTimeMillis();System.out.print(" 上传速度为(KB/s)"+bytesRead/(time2-time) );System.out.print(" 大约剩余时间:"+(contentLength-bytesRead)/(bytesRead/(time2-time)));System.out.println();}});//upload.setFileSizeMax(1024*100);//单个上传的最大值//upload.setSizeMax(1024*1024);//总的最大值//设置编码 防止文件名乱码upload.setHeaderEncoding("utf-8");// 利用核心类解析requestList<FileItem> list = upload.parseRequest(request);if (upload.isMultipartContent(request)) {// 遍历集合,获取所有的FIleItemfor (FileItem item : list) {if (item.isFormField()) {// 如果当前的FileItem封装到是一个普通的请求参数,则返回true//获取字段名String name = item.getFieldName();//取值String value = item.getString("utf-8");System.out.println(name + ":" + value);} else {// 说明这个FileItem中保存是上传的文件String fileName = item.getName();// 获取上传文件的名称if(fileName == null ||fileName==""){throw new RuntimeException("文件名不能为空");}if(fileName.contains("\\")){//fileName 获得的是全文件名 包括路径 应该只截取文件名字fileName = fileName.substring(fileName.lastIndexOf("\\")+1);}InputStream in = item.getInputStream();// 获取文件内容流System.out.println("上传文件:" + fileName);//创建上传目录String path = this.getServletContext().getRealPath("/update/"+request.getRemoteAddr());new File(path).mkdirs();//UUID.randomUUID() 生成唯一识别号 防止重复FileOutputStream out = new FileOutputStream(path + "/"+ UUID.randomUUID().toString()+"_"+fileName);// 将上传的文件保存到指定位置int i = 0;while ((i = in.read()) != -1) {out.write(i);}in.close();out.close();//删除缓存文件item.delete();}}}else{}} catch (FileUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
0 0
- 使用FileUpload jar包上传文件的例子。
- 使用commons-fileupload.jar servlet上传文件 遇到的问题
- 文件上传 使用apache common-fileupload.jar
- java 上传包 commons-fileupload-1.2.jar处理上传文件
- java 上传包 commons-fileupload-1.2.jar处理上传文件
- 使用commons-fileupload.jar实现图片上传的一个小例子
- 文件上传 commons-fileupload.jar
- jsp两个不同组建实现文件上传总结--cos.jar包和commons-fileupload.jar包
- 使用apache commons-fileupload.jar 实现文件上传
- 使用apache commons-fileupload.jar 实现文件上传
- 使用apache commons-fileupload.jar 实现文件上传
- 使用commons-fileupload-1.2.2.jar插件文件上传
- 使用apache commons-fileupload.jar 实现文件上传
- 使用apache commons-fileupload.jar 实现文件上传
- 使用apache commons-fileupload.jar 实现文件上传
- 使用FileUpload上传文件
- 使用FileUpload上传文件
- ---JavaWeb文件上传(commons-fileupload-x.x.x.jar的使用)
- 目前一个比较权威的各类杀毒软件在线检测的网站
- Android:QQ空间分享
- 关于mysql数据库在输入密码后,滴的一声直接退出界面的解决办法(详细办法)
- flask框架学习
- Web安全字体
- 使用FileUpload jar包上传文件的例子。
- LitePal使用问题记录
- Ubuntu下解压缩文件
- windows 命令集合
- github推荐的.gitignore写法
- 红外协议之NEC协议
- 蓝桥杯练习系统题解
- 1 不一样的 C 基础
- UGUI初次接触之Canvas