- 浏览: 81022 次
文章分类
最新评论
-
zhanwc:
求一份源码: zhanweichun@126.com
android瀑布流简单实现原理 -
zhanwc:
求一份源码~
android瀑布流简单实现原理 -
dou_shini8820:
vtrtbb 写道是 TimesTen 吧, 没听说过time ...
高并发下,数据库成最大问题怎么办? -
vtrtbb:
是 TimesTen 吧, 没听说过timesden另外,这个 ...
高并发下,数据库成最大问题怎么办? -
chenyingjie1001:
说的对 .还不是很全...sql这种东西 还是多写 靠感觉!
Oracle报错:不是单组分组函数
三种文件上传组件代码.
commons-fileupload上传组件:
(此组件还需要commons-io.jar)
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //上传文件工厂实例 DiskFileItemFactory fileFactory = new DiskFileItemFactory(); //上传文件存储路径 String path = request.getSession().getServletContext().getRealPath("/") + "upload\\"; //创建文件存放的仓库 fileFactory.setRepository(new File(path)); //设置缓存的大小(20M) fileFactory.setSizeThreshold(1024*1024*20); //用上传工厂实例创建上传文件对象 ServletFileUpload fileUpload = new ServletFileUpload(fileFactory); fileUpload.setSizeMax(1024*1024*30); //fileUpload.setFileSizeMax(1024*1024*10); //这句应该是设置单个文件大小的意思,但加上这句会失败. //处理页面穿入的表单项 List items = null; try { items = fileUpload.parseRequest(request); } catch (SizeLimitExceededException e) { request.setAttribute("errorInfo","上传文件超出30M"); request.getRequestDispatcher("jsp/error.jsp").forward(request, response); return; } catch (FileUploadException e) { e.printStackTrace(); request.setAttribute("errorInfo","上传出错"); request.getRequestDispatcher("jsp/error.jsp").forward(request, response); return; } //遍历所有表单项 for (int i = 0; i < items.size(); i++) { FileItem item = (FileItem)items.get(i); if ("".equals(item.getName())){//表示没有文件,这里暂时是通过文件名是否为空来判断是否有上传的文件的 continue; } //如果这个表单是个普通表单域 if (item.isFormField()){ String name = item.getFieldName(); String value = item.getString("utf-8"); //将表单名和表单值传给页面 request.setAttribute("name", name); request.setAttribute("value", value); } //如果是文件域 else { //获取文件域的表单域名 String fieldName = item.getFieldName(); //获取文件名 String fileName = item.getName(); //获取文件类型 String contentType = item.getContentType(); //对于上传文件的存放地址来建立一个输出流 String newName = path + (fileName.lastIndexOf(".") < 0 ? fileName.substring(0, fileName.length()) : System.currentTimeMillis() + fileName.substring(fileName.indexOf("."), fileName.length())); //判断上传文件是否在缓存之中 //这句可能表示上传的文件是否正在缓存向硬盘写入的过程中,但如果加上这句,会上传失败,不知为何... // if (item.isInMemory()){ FileOutputStream output = new FileOutputStream(newName); InputStream input = item.getInputStream(); byte[] buffer = new byte[1024]; int len; while( (len = input.read(buffer)) > 0 ){ output.write(buffer, 0, len); } input.close(); output.flush(); output.close(); // } request.setAttribute("fieldName",fieldName); request.setAttribute("fileName",fileName); request.setAttribute("contentType",contentType); } } request.getRequestDispatcher("jsp/uploadResult.jsp").forward(request, response); }
COS上传组件:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //上传文件存储路径 String path = request.getSession().getServletContext().getRealPath("/") + "upload\\"; //设置上传文件最大限度 MultipartParser mp = null; try { mp = new MultipartParser(request,1024*1024*10*2); } catch (Exception e) { request.setAttribute("errorInfo","上传文件失败"); request.getRequestDispatcher("jsp/error.jsp").forward(request, response); return; } //代表一个file Part part = null; while((part = mp.readNextPart()) != null){ //获取表单名 String fieldName = part.getName(); //如果是文件域 if (part.isFile()){ //取得上传的该文件 FilePart filePart = (FilePart)part; String fileName = filePart.getFileName(); if (fileName != null && !"".equals(fileName)){ long size = filePart.writeTo(new File(path));//将文件写入硬盘 request.setAttribute("fieldName",fieldName); request.setAttribute("fileName",fileName); request.setAttribute("contentType",filePart.getContentType()); } //表示没有文件 else { System.out.println("没有文件"); } } } request.getRequestDispatcher("jsp/uploadResult.jsp").forward(request, response); }
SmartUpload组件:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //上传文件存储路径 String path = request.getSession().getServletContext().getRealPath("/") + "upload\\"; SmartUpload smtUpload = new SmartUpload(); smtUpload.setForcePhysicalPath(true); smtUpload.initialize(this.getServletConfig(), request, response); //设置上传的每个文件的大小(10M) //这个能限制单个文件的大小 smtUpload.setMaxFileSize(1024*1024*10); //设置上传的所有文件总大小(30M) smtUpload.setTotalMaxFileSize(1024*1024*10*3); //设置允许上传文件的格式 smtUpload.setAllowedFilesList("jpg,gif,png,jpeg,bmp,JPG,GIF,PNG,JPEG,BMP,zip,rar,exe"); // try { // //或者设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html,js扩展名的文件和没有扩展名的文件。 // smtUpload.setDeniedFilesList("exe,bat,jsp,htm,html,js,,"); // } catch (Exception e) { // e.printStackTrace(); // request.setAttribute("errorInfo","禁止上传exe,bat,jsp,htm,html,js类型和空类型的文件"); // request.getRequestDispatcher("jsp/error.jsp").forward(request,response); // return; // } try { smtUpload.upload(); //文件类型错误,文件大小错误的异常都是在这抛出的. } catch (Exception e){ e.printStackTrace(); request.setAttribute("errorInfo","文件上传错误,请检查上传的文件类型和大小"); request.getRequestDispatcher("jsp/error.jsp").forward(request,response); return; } String fileName = "",fieldName="",contentType=""; //上传文件 for (int i = 0; i < smtUpload.getFiles().getCount(); i++) { com.jspsmart.upload.File file = smtUpload.getFiles().getFile(i); //如果该文件不为空 if (!file.isMissing()) { fieldName = file.getFieldName(); contentType=file.getContentType(); try { fileName = file.getFileName(); String suffix = fileName.substring(fileName.lastIndexOf("."),fileName.length()); String newFileName = System.currentTimeMillis() + suffix;//产生新的文件名 System.out.println(path+newFileName); //保存文件 file.saveAs(path + newFileName); } catch (Exception e) { e.printStackTrace(); request.setAttribute("errorInfo","文件上传错误,请检查上传的文件类型"); request.getRequestDispatcher("jsp/error.jsp").forward(request,response); return; } } } request.setAttribute("fieldName",fieldName); request.setAttribute("fileName",fileName); request.setAttribute("contentType",contentType); request.getRequestDispatcher("jsp/uploadResult.jsp").forward(request, response); }
upload.jsp:
<form action="<%=basePath %>/xxx.do" enctype="multipart/form-data" method="post"> 上传文件:<br /> <input type="file" name="Upload1" contenteditable="false" /> <br /><br /> <input type="file" name="Upload2" contenteditable="false" /> <br /><br /> <input type="file" name="Upload3" contenteditable="false" /> <br /><br /> <input type="submit" value="上传" /> </form>
四、通过字节流实现文件上传
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { java.io.InputStream is = request.getInputStream(); java.io.FileOutputStream fos = new java.io.FileOutputStream("d:\\out.txt"); byte[] buffer = new byte[8192]; int count = 0; while((count = is.read(buffer)) >0) { fos.write(buffer, 0, count); } fos.close(); }
五、使用apache commons-io的FileUtils.copyFile简单地复制文件
用一般的方法,我们要复制一个文件,可能需要读取源文件,生成流对象,再写入一个新的文件中,使用apache commons-io很容就可以处理文件的复制。
下面的例子演示我们怎样使用FileUtils.copyFile方法在同一个文件夹复制文件和使用FileUtils.copyFileToDirectory方法复制到指定的文件夹中。其中System.getProperty("java.io.tmpdir")为通过JVM读取java.io.tmpdir属性取得临时文件夹,每种操作系统有所不同,Windows一般是C:\DOCUME~1\用户~1\LOCALS~1\Temp,Solaris一般是:/var/tmp/,Linux和Mac OS X一般是:/tmp,Windows的java.io.tmpdir属性值可以看环境变量->用户变量中的TMP。
当然我们一般使用的是绝对或相对路径,如要复制到F:\ajava目录中,我们只需将targetDir改成File targetDir = new File("F:\\ajava");运行后就可以看到结果。
package ajava.sample.apache; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; public class AjavaFileCopyExample { public static void main(String[] args) { // 源File对象 File source = new File("ajava.txt"); // 备份的File对象 File target = new File("ajava-backup.txt"); //通过JVM读取java.io.tmpdir属性取得临时文件夹 File targetDir = new File(System.getProperty("java.io.tmpdir")); try { //在同一个文件夹复制文件 System.out.println("复制 " + source + " 文件到 " + target); FileUtils.copyFile(source, target); // 根据指定的文件夹复制 System.out.println("复制 " + source + " 文件到" + targetDir + "目录"); FileUtils.copyFileToDirectory(source, targetDir); } catch (IOException e) { // Errors will be reported here if any error occures during copying // the file e.printStackTrace(); } } }
输出结果为:
复制 ajava.txt 文件到 ajava-backup.txt
复制 ajava.txt 文件到C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp目录
再查看对应的文件夹,就可以发现备份文件。
六、struts2的文件上传
http://bbs.chinaunix.net/thread-1845099-1-1.html
发表评论
-
循环删除List和Map中的值
2013-06-27 10:08 0Map<String,String> param ... -
Java把List分成一定容量的n个数组
2013-05-06 17:04 4492数组的长度length是long型的,理论上长度是没有限制 ... -
SpringAop基础之静态代理和动态代理
2013-04-15 22:54 2707java动态代理常用于做权限控制,细粒度权限如对方法的操作 ... -
java中各种流的应用场景
2013-03-26 17:55 2030处理二进制字节流:outputstream,inputstr ... -
使用cookie记住用户名和密码
2013-03-14 10:52 1781//1、登陆页jsp页面最上方使用java代码取得cook ... -
java反射reflect学习总结
2012-12-30 15:12 1638java的反射java.lang.reflect包中 ... -
java多线程详细讲解
2012-11-24 22:38 1148首先要知道实现java多线程有2种方法,一个是继承Thread ... -
jdk1.5泛型详细介绍
2012-11-24 17:37 842泛型是JDK1.5的新特性 1.泛型类 没有泛型之前 ... -
java自定义标签的开发步骤
2012-11-03 16:23 1380在jsp页面记录访问者的IP,可使用如下java代码: ... -
java动态代理学习
2012-11-24 17:29 6671.java动态代理常用于做权限控制,细粒度权限如对方法的操作 ... -
完整java开发中JDBC连接数据库代码和步骤
2012-08-09 16:44 907JDBC连接数据库 •创建一个以JDBC连接数据 ...
相关推荐
java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件...
Java文件异步上传是一种在Web应用中常见的技术,它允许用户在不阻塞浏览器界面的情况下上传文件。这种技术尤其在处理大文件或者批量上传时,能够显著提升用户体验,因为它们不会冻结页面,允许用户继续与应用程序...
3. 文件上传协议:Java 文件上传程序使用 TCP 协议来实现文件上传功能。在服务器端,我们需要读取客户端上传的文件,并将其保存到指定的目录。 知识点:TCP 协议、文件上传协议 4. 文件读取和写入:Java 文件上传...
java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java ...
SmartUpload是一个Java上传组件,它简化了文件上传的处理过程。在JSP页面中,我们可以使用SmartUpload提供的标签库来创建上传界面。在Servlet中,初始化SmartUpload对象,调用其`upload()`方法解析上传请求,然后...
利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...
"性能最好的Java文件上传组件"是指一种优化了上传速度和资源消耗的工具,它能够有效地处理大文件上传、多文件并发上传等问题,提高应用的用户体验。在这个场景中,我们提到了基于"COS"的Java文件上传组件。COS通常指...
Java 实现上传文件类型检测过程解析是指在进行文件上传时,对上传文件的格式进行控制,以防止黑客将病毒脚本上传。单纯的将文件名的类型进行截取的方式非常容易遭到破解,上传者只需要将病毒改换文件名便可以完成...
在Java编程语言中,文件上传是一项常见的功能,广泛应用于各种Web应用中,如社交媒体平台、云存储服务等。实现基于Java的文件上传涉及到多个技术点,包括Servlet、HTTP协议、多部分请求(Multipart Request)以及...
首先,我们来看“java文件上传”这个知识点。Java提供了多种方法来处理文件上传,最常见的是使用Servlet API中的Part接口,这是Java EE 7引入的,专门用于处理multipart/form-data类型的HTTP请求,也就是通常用于...
3. `Java服务端代码`:处理文件上传的Servlet或Controller,负责接收请求、解析文件并保存到服务器。 4. `CSS样式文件`:定义了上传界面的样式,使界面更加美观。 5. `HTML模板`:可能包含了SWF和EXT的初始化代码,...
2项目为实现文件上传的三种方式的源码,详细说明见我的博客。 jsp_upload-servlet项目:(1).Jsp/servlet 实现文件上传 (2).模拟Post请求/servlet 实现文件上传 jetty_upload-springmvc项目:(3).模拟Post请求/...
在实际开发中,你还需要考虑错误处理和异常捕获,确保在文件上传过程中遇到问题时能够妥善处理。此外,如果SharePoint的访问控制较为严格,可能需要使用ADAL(Active Directory Authentication Library)来获取访问...
本示例("java文件上传dome")聚焦于使用Tomcat中的Servlet和Apache Commons FileUpload库来实现这一功能。以下是这个示例中涉及的关键知识点: 1. **Servlet**: Servlet是Java EE中用于扩展服务器功能的Java类。...
总的来说,这个源码包提供了从客户端文件选择、HTTP上传、服务器端接收、文件保存到服务器的完整流程,是学习和理解Java文件上传功能的好例子。通过深入研究和实践,开发者可以掌握文件上传这一核心的Web开发技能。
"java文件上传组件包"正是这样一套工具集,旨在简化Java开发中的文件上传流程。 在Java中处理文件上传,主要涉及以下知识点: 1. **Servlet API**:在服务器端,Servlet API是处理HTTP请求的基础。`javax.servlet....
这两个库提供了强大的文件操作和文件上传功能,是Java开发者处理文件上传问题的得力助手。 首先,`commons-io-2.5.jar`是Apache Commons IO库的一部分,这是一个用于处理输入/输出操作的Java库。它提供了许多实用...
在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...
(1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 (2)单击“上传服务器”窗口中的“启动服务..”按钮。 (3)单击“上传...
**jQuery Uploadify与Java文件上传** 在Web开发中,文件上传功能是不可或缺的一部分。`jQuery Uploadify`是一款基于JavaScript和jQuery的插件,它提供了一种优雅的方式来进行多文件上传,具有良好的用户体验和丰富...