- 浏览: 173514 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
spzjby:
这。。应该不行吧,在上传的时候文件正在写入,cancel操作要 ...
基于AJAX的文件上传显示进度条实现 -
lomodd:
准备做一个,拿来参考了。
基于AJAX的文件上传显示进度条实现 -
BackMe:
终于找到需要的东西了,学习中! 好东西果断收藏!
Ajax留言本实现 -
benlsoft:
谢谢了,试下先。
VirtualBox 安装ghost版windows XP -
yexin218:
plkong 写道cqllang 写道偶比较关注楼主咋把每张图 ...
最新版easyMule-VeryCD-src v1.1.13编译
1. 首先需要下载需要的组件。
下载commons-fileupload-1.2.1-bin.zip,下载网址:
http://commons.apache.org/downloads/download_fileupload.cgi
下载commons-io-1.4-bin.zip,下载网址:
http://commons.apache.org/downloads/download_io.cgi
2. 用开源的FileUpload组件,可以很方便的给自己的系统添加功能强大的文件上传模块。下图为文件上传的基本流程图。
3. 将commons-fileupload-1.2.1-bin.zip包中的commons-fileupload-1.2.1.jar文件和commons-io-1.4-bin.zip包中的commons-io-1.4.jar文件拷贝到web工程下的WEB-INF\lib目录下。
4. 在服务器端创建处理文件上传的Servlet类。源代码如下:
import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; 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.FileUploadBase.SizeLimitExceededException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; public FileUploadServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { final long MAX_SIZE = 300 * 1024 * 1024;// 设置上传文件最大值 // 允许上传的文件格式的列表 final String[] allowedExt = new String[] {"jpg", "jpeg", "gif", "txt", "doc","mp3", "wma", "m4a","rar","zip" }; response.setContentType("text/html"); // 设置字符编码为UTF-8, 统一编码,处理出现乱码问题 response.setCharacterEncoding("UTF-8"); // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘 dfif.setRepository(new File(request.getRealPath("/") + "ImagesUploadTemp"));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录 // 用以上工厂实例化上传组件 ServletFileUpload sfu = new ServletFileUpload(dfif); // 设置最大上传大小 sfu.setSizeMax(MAX_SIZE); PrintWriter out = response.getWriter(); // 从request得到所有上传域的列表 List fileList = null; try { fileList = sfu.parseRequest(request); } catch (FileUploadException e) {// 处理文件尺寸过大异常 if (e instanceof SizeLimitExceededException) { out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p />"); out .println("<a href=\"FileUpload.html\" target=\"_top\">返回</a>"); return; } e.printStackTrace(); } // 没有文件上传 if (fileList == null || fileList.size() == 0) { out.println("请选择上传文件<p />"); out.println("<a href=\"FileUpload.html\" target=\"_top\">返回</a>"); return; } // 得到所有上传的文件 Iterator fileItr = fileList.iterator(); // 循环处理所有文件 while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前文件 fileItem = (FileItem) fileItr.next(); // 忽略简单form字段而不是上传域的文件域(<input type="text" />等) if (fileItem == null || fileItem.isFormField()) { continue; } // 得到文件的完整路径 path = fileItem.getName(); // 得到文件的大小 size = fileItem.getSize(); if ("".equals(path) || size == 0) { out.println("请选择上传文件<p />"); out .println("<a href=\"FileUpload.html\" target=\"_top\">返回</a>"); return; } // 得到去除路径的文件名 String t_name = path.substring(path.lastIndexOf("\\") + 1); // 得到文件的扩展名(无扩展名时将得到全名) String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1); // 拒绝接受规定文件格式之外的文件类型 int allowFlag = 0; int allowedExtCount = allowedExt.length; for (; allowFlag < allowedExtCount; allowFlag++) { if (allowedExt[allowFlag].equals(t_ext)) break; } if (allowFlag == allowedExtCount) { out.println("请上传以下类型的文件<p />"); for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++) out.println("*." + allowedExt[allowFlag] + " "); out .println("<p /><a href=\"FileUpload.html\" target=\"_top\">返回</a>"); return; } long now = System.currentTimeMillis(); // 根据系统时间生成上传后保存的文件名 String prefix = String.valueOf(now); // 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下 // String u_name = request.getRealPath("/") + "ImagesUploaded/" // + prefix + "." + t_ext; String filename = prefix + "." + t_ext; try { // 保存文件到C:\\upload目录下 fileItem.write(new File("C:\\upload\\"+filename)); System.out.println(filename); out.println("文件上传成功. 已保存为: " + prefix + "." + t_ext + " 文件大小: " + size + "字节<p />"); out .println("<a href=\"FileUpload.html\" target=\"_top\">继续上传</a>"); } catch (Exception e) { e.printStackTrace(); } } } }
5. 在客户端创建上传文件页面
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>文件上传</title> </head> <body> <form action="FileUploadServlet" method="post" enctype="multipart/form-data"> <input type="file" size="30" name="file01" /> <br /> <input type="file" size="30" name="file02" /> <br /> <input name="up" type="submit" value="上传" /></form> </body> </html>
评论
6 楼
plkong
2008-09-05
bug应该会有,在此只是简单的完成了功能的实现,也没有进行任何的测试。不过我在运行过程中没有发现这个问题。
5 楼
forever_jenova
2008-09-02
文件上传有BUG,有时两个文件只能上传一个
4 楼
plkong
2008-08-29
谢谢大家的关注,自己还实现了一个基于Ajax的上传文件同时可以显示进度的实例,等整理完文档后,也拿出来和大家分享。
此流程图使用StarUML画的,该工具是一个开源的UML工具,功能和IBM的Rose差不多。优点是:安装文件小,使用时占用系统资源少,关键一点是可以免费使用。下载地址:http://staruml.sourceforge.net/en/。
此流程图使用StarUML画的,该工具是一个开源的UML工具,功能和IBM的Rose差不多。优点是:安装文件小,使用时占用系统资源少,关键一点是可以免费使用。下载地址:http://staruml.sourceforge.net/en/。
3 楼
xieye
2008-08-29
问一下流程图用什么工具画的?
2 楼
fishice
2008-08-29
很强悍,学习了
1 楼
sunnylocus
2008-08-29
不错,看出楼主很用心。
发表评论
-
java socket
2017-03-19 20:34 447Socket接收字节缓冲区 http://blog.csd ... -
ab test
2015-04-09 23:36 0https://github.com/ysc/APDPla ... -
log4j 最佳配置优化
2015-04-06 21:03 1031<?xml version="1.0&qu ... -
webrenderer
2013-03-12 22:23 842 -
Ant JavaScript 使用
2013-03-04 19:16 714http://ant.apache.org/manual/T ... -
Jenkins插件开发入门 资料收集
2013-01-31 09:44 7943Jenkins插件开发入门 Jenkins的前身是Hu ... -
远程调试CruiseControl 服务器
2012-12-12 00:02 8031. 修改cruisecontrol.bat配置文件 ... -
ererwerwer
2012-09-21 19:19 0http://www.csdn.net/article/201 ... -
Java字节码(.class文件)格式详解((转载)
2012-09-18 23:21 870http://www.blogjava.net/DLevin/ ... -
findbugs 网络收集
2012-11-10 17:13 965[hyddd的FindBugs分析记录][M X O ... -
CruiseControl 和 Tomca集成
2012-09-15 14:49 1134初步开始研究持续集成引擎:CruiseControl(CC), ... -
设计模式-adapter
2012-08-26 15:33 884基本概念 客户:需要调用我们的代码的对象。 ... -
eclipse 启动远程调试
2012-08-03 14:35 0start java -Xdebug -Xrunjdwp:tr ... -
bat 后台运行
2012-06-03 20:43 1143方法一: @echo off if "%1 ... -
自定义限制JTextArea输入的字符数
2012-05-23 22:25 1669import javax.swing.JTextArea ... -
一个l类似 Jlabel 用于自动换行的文本显示组件
2012-05-19 23:43 3347在Swing中Jlabel组件显示长文本不换行,用JtextA ... -
java this$0
2012-05-06 00:19 5238有synthetic标记的field和me ... -
findbugs
2012-04-10 22:48 1289关于findbugs收集的网络资料信息 http:// ... -
Swing UI
2012-02-22 23:46 983注意代码中的几个部分: 首先是paintComponent方 ... -
eclipse3.7 安装ADT问题
2011-11-17 10:19 3002eclipse3.7 安装ADT问题: Cannot ...
相关推荐
commons-fileupload 文件上传 中文乱码 多文件上传
用commons-fileupload实现文件上传功能,两个文件搞定!!!!
FileUpload 文件上传组件的ASP.NET实例,基于主副窗口的上传程序,利用线程提升上传速度。本插件可支持多文件上传,为了提升上传体验,这里使用了AjaxControlToolkit.dll、MattBerseth.WebControls.AJAX.dll两个组件...
非常详细非常好的例子。
使用ASP.NET编写的一个简单小程序,使用文件上传控件(FileUpload)编写的一个图片上传程序,上传成功后可以查看文件的类型、大小
原理: FileUpload实现上传功能, UploadListener 监听上传进度, DWR push (Reverse Ajax) 进度信息并更新页面, 实现无刷新多文件上传 运行环境: Tomcat 5/6 测试通过 说明:累计上传文件不超过10M(可以更改...
fileupload 实例代码,文件上传代码实例。
fileupload上传代码与txt文件取值实例
smartupload,基于apatch 的fileupload的文件上传):该文件包括文件上传的多个实例:有基于strtus2自带的文件上传实例、smartupload文件实例 和基于aptche自带的fileupload 的文件上传实例.
//获取文件长度 UploadInfo info = HttpContext.Current.Session["UploadInfo"] as UploadInfo; if (info != null && info.IsReady) { int soFar = info.UploadedLength; int total = info.ContentLength; ...
主要为大家详细介绍了Apache commons fileupload文件上传实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
使用 FileUpload 控件,可以为用户提供一种将文件从用户的计算机发送到服务器的方法。该控件在允许用户上载图片、文本文件或其他文件时很有用。要上载的文件将在回发期间作为浏览器请求的一部分提交给服务器。在文件...
apache.commons.fileupload上传实例 java文件上传
下面小编就为大家带来一篇用fileupload组件实现的大文件上传简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本人亲自使用cos,smartupload,fileupload做的文件上传得小例子,只用了基本功能,注释非常详细,一看就能学会。测试时请使用图片上传,以便达到最佳效果。转载请注明原作者名,请珍惜他人劳动成果。
源码 博文链接:https://lisanlai.iteye.com/blog/660238
里面包含了,Commons-fileupload和smartupload两种上传文件的代码实例。
主要介绍了commons fileupload实现文件上传的实例代码,包括文件上传的原理分析等相关知识点,本文给大家介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
利用servlet实现的commons-fileupload的实例。也就是文件上传实例。