`
pingchajava
  • 浏览: 30297 次
  • 性别: Icon_minigender_1
  • 来自: 常德
社区版块
存档分类
最新评论

java 文件上传

    博客分类:
  • java
阅读更多

使用 ApacheCommons FileUpload 组件

 

1、commons-io-1.4.jarcommons-io-1.2.1.jar包导入到工程中

//必须是multipart的表单数据。

    <form name="myform" action="demo1.jsp" method="post"

       enctype="multipart/form-data">

       Your name: <br>

       <input type="text" name="name" size="15"><br>

       File:<br>

       <input type="file" name="myfile"><br>

       <br>

       <input type="submit" name="submit" value="Commit">

    </form>

 

 

 

 //产生一个磁盘文件项的工厂对象
 DiskFileItemFactory factory=new DiskFileItemFactory();

   //通过工厂对象获得一个文件上传的对象
   ServletFileUpload upload=new ServletFileUpload(factory);

   //解析request请求中的参数,获得的所有请求参数,并且将请求的参数存放到一个list集合中,list集合中的每一个值都是一个体FileItem类型的对象

   List list=upload.parseRequest(request); 

   for(int i=0;i<list.size();i++){

      FileItem item=(FileItem)list.get(i);    //循环读取出每个参数

      //判断当前的这个item是一个普通的表单元素,还是一个文件域元素
       true表明这是一个普通的表单元素  false 表示这个item是一个文件域
      if(!item.isFormField()){   //
          //判断这是不是一个空值
        if(item.getName()!=null&& !item.getName().equals("")){

           System.out.println("上传文件的大小为:"+item.getSize());

           System.out.println("上传文件的类型为:"+item.getContentType());

           System.out.println("上传文件的名字为:"+item.getName());

           //下面开始真正的保存到Tomcat服务器对应站点的目录images下

           File file=new File(item.getName());
           //真正保存上传图片的文件

           File realFile=new File(pageContext.getServletContext().getRealPath("/")+"images",file.getName());
           System.out.println("上传文件的名字为:"+file.getName());

           System.out.println("最后保存到的服务器的路径为:"+realFile);

           //写入到服务器磁盘中

           item.write(realFile);

 

 

第二种方法:

String uploadPath="D:\\temp";

  boolean isMultipart = ServletFileUpload.isMultipartContent(request);

  if(isMultipart==true){

      try{

        FileItemFactory factory = new DiskFileItemFactory();

        ServletFileUpload upload = new ServletFileUpload(factory);

        List<FileItem> items = upload.parseRequest(request);//得到所有的文件

       Iterator<FileItem> itr = items.iterator();

        while(itr.hasNext()){//依次处理每个文件

         FileItem item=(FileItem)itr.next();
     if (!item.isFormField()) {
         String fileName=item.getName();//获得文件名,包括路径

         if(fileName!=null){  
             File fullFile=new File(item.getName());

             File savedFile=new File(uploadPath,fullFile.getName());

             item.write(savedFile);
          }

         }

        }

        out.print("upload succeed");

      }

      catch(Exception e){

         e.printStackTrace();

      }

  }

  else{

      out.println("the enctype must be multipart/form-data");

  }

 

上传一个文件到指定的目录,并限定文件大小。

File uploadPath = new File("D:\\temp");//上传文件目录

    if (!uploadPath.exists()) {

       uploadPath.mkdirs();

    }

    // 临时文件目录

    File tempPathFile = new File("d:\\temp\\buffer\\");

    if (!tempPathFile.exists()) {

       tempPathFile.mkdirs();

    }

    try {

       // Create a factory for disk-based file items

       DiskFileItemFactory factory = new DiskFileItemFactory();

 

       // Set factory constraints

       factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb

       factory.setRepository(tempPathFile);//设置缓冲区目录

 

       // Create a new file upload handler

       ServletFileUpload upload = new ServletFileUpload(factory);

 

       // Set overall request size constraint

       upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB

 

       List<FileItem> items = upload.parseRequest(request);//得到所有的文件

       Iterator<FileItem> i = items.iterator();

       while (i.hasNext()) {

           FileItem fi = (FileItem) i.next();

           String fileName = fi.getName();

           if ( !fi.isFormField()&&fileName != null) {

       File fullFile = new File(fi.getName());

       File savedFile = new File(uploadPath, fullFile

              .getName());

       fi.write(savedFile);

           }

       }

       out.print("upload succeed");

    } catch (Exception e) {

       e.printStackTrace();

    }

  

 

 

 struts1.x 的上传:

  

private void upload(ActionContext context, DynaValidatorForm frm,
			) {
		Hashtable files = frm.getMultipartRequestHandler().getFileElements();
		java.util.Enumeration enum = files.keys();
		String fname = "";
		while (enum.hasMoreElements()) {
			fname = (String) enum.nextElement();
			FormFile ff = (FormFile) files.get(fname);
			if (!(ff == null || ff.getFileSize() == 0
					|| ff.getFileName() == null || ff.getFileName().equals(""))) {
								try {
					
					Calendar cal = Calendar.getInstance();
 String fileName = ff.getFileName()+String.valueOf(cal.getTimeInMillis());
										InputStream stream = ff.getInputStream();
					String filePath = context.getRequest().getRealPath("/"); //取当前系统路径
					
					//建立一个上传文件 的输出流,将上传文件存入web的根目录
					OutputStream bos = new FileOutputStream(filePath + "zjh/"
							+ fileName);

					int bytesRead = 0;
					byte[] buffer = new byte[8192];

					while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
						bos.write(buffer, 0, bytesRead);//将文件写入服务器 
					}
					bos.close();
					stream.close();


				} catch (Exception fnfe) {
					fnfe.printStackTrace(System.out);
				}
			}

		}

 

  struts.xml 文件:

 

<form-bean name="zjhDownLoadForm" type="org.apache.struts.validator.DynaValidatorForm">
		    <form-property name="saction" type="java.lang.String"></form-property>

<form-property name="ZJH_DOWNLOAD"
type="org.apache.struts.upload.FormFile" />
	</form-bean>

 

分享到:
评论

相关推荐

    java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类

    java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件...

    性能最好的Java文件上传组件

    "性能最好的Java文件上传组件"是指一种优化了上传速度和资源消耗的工具,它能够有效地处理大文件上传、多文件并发上传等问题,提高应用的用户体验。在这个场景中,我们提到了基于"COS"的Java文件上传组件。COS通常指...

    java文件上传程序

    Java 文件上传程序 Java 文件上传程序是指使用 Java 语言编写的文件上传程序,负责接收和处理客户端上传的文件。以下是 Java 文件上传程序的相关知识点: 1. 服务器端编程:Java 文件上传程序的服务器端使用 Java ...

    java 文件上传工具类 java 文件上传工具类

    java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java ...

    java文件上传组件包

    "java文件上传组件包"正是这样一套工具集,旨在简化Java开发中的文件上传流程。 在Java中处理文件上传,主要涉及以下知识点: 1. **Servlet API**:在服务器端,Servlet API是处理HTTP请求的基础。`javax.servlet....

    java文件上传方法

    ### Java文件上传方法详解 在Java开发中,文件上传是一个非常常见的需求,尤其是在Web应用程序中。本文将基于提供的代码片段,详细介绍如何使用Java实现文件上传功能,并解释代码中的关键部分。 #### 一、代码结构...

    java文件上传dome

    本示例("java文件上传dome")聚焦于使用Tomcat中的Servlet和Apache Commons FileUpload库来实现这一功能。以下是这个示例中涉及的关键知识点: 1. **Servlet**: Servlet是Java EE中用于扩展服务器功能的Java类。...

    彻底搞定java文件上传.txt

    ### 彻底搞定Java文件上传:jspsmartupload、commonupload与orellay对比解析 在Java开发领域中,文件上传一直是备受关注的功能之一。针对这一需求,开发者们通常会选用几种较为流行的库来实现这一功能,其中包括较...

    java文件上传例子

    在Java编程中,文件上传是一项常见的任务,尤其在开发Web应用程序...通过这个简单的Java文件上传例子,开发者可以学习如何在实际项目中实现文件上传功能,并理解相关的技术细节。这有助于提升Web应用的交互性和功能性。

    Java文件上传

    首先,Java文件上传通常涉及到Servlet和HTTP协议。Servlet是Java中用于处理HTTP请求的服务器端组件,它接收来自客户端(通常是Web浏览器)的请求,并返回响应。在文件上传场景下,Servlet会接收包含上传文件数据的...

    java文件上传ar包

    总结来说,Java文件上传AR包涉及到使用Servlet API、Apache Commons FileUpload和IO库来处理多部分请求,解析上传的文件,存储到服务器,并确保整个过程的安全性和性能。在实际开发中,这些知识点是构建高效、安全...

    flex+java文件上传

    Flex和Java文件上传技术是Web应用中常见的功能,主要用于用户在网页端上传本地文件到服务器。Flex是一款由Adobe公司开发的开源框架,主要用于构建富互联网应用程序(Rich Internet Applications,RIA)。它基于...

    jquery uploadify java文件上传

    **jQuery Uploadify与Java文件上传** 在Web开发中,文件上传功能是不可或缺的一部分。`jQuery Uploadify`是一款基于JavaScript和jQuery的插件,它提供了一种优雅的方式来进行多文件上传,具有良好的用户体验和丰富...

    Java文件上传并自动解压

    1. **Java文件上传** - **Servlet API**:Java Servlet API提供了处理HTTP请求的能力,包括文件上传。在SpringMVC中,我们通常使用`@RequestParam`注解来接收上传的文件。 - **Commons FileUpload**:Apache ...

    基于JAVA文件上传

    在Java编程语言中,文件上传是一项常见的功能,广泛应用于各种Web应用中,如社交媒体平台、云存储服务等。实现基于Java的文件上传涉及到多个技术点,包括Servlet、HTTP协议、多部分请求(Multipart Request)以及...

    java 文件上传工具类 文件及文本数据

    以上是关于Java文件上传工具类处理文件及文本数据的主要知识点。理解并熟练掌握这些概念,可以帮助开发者创建高效、安全的文件上传系统。在实际开发中,还需要根据具体需求和项目规范来定制和扩展这些基础功能。

    java文件上传下载工具类

    以下是对"java文件上传下载工具类"这一主题的详细解释。 首先,让我们了解文件上传。在Web应用中,用户可能需要上传文件,如图片、文档或视频。Java通过Servlet API提供了处理文件上传的功能。Servlet 3.0及以上...

    java文件上传的用到的jar包

    "java文件上传的用到的jar包"就是这样一个集合,它包含了实现文件上传功能所需的各种组件。 1. **Apache Commons FileUpload**:这是最常用的文件上传库之一,提供了处理HTTP请求中的多部分数据(multipart/form-...

    java文件上传源码

    总的来说,这个源码包提供了从客户端文件选择、HTTP上传、服务器端接收、文件保存到服务器的完整流程,是学习和理解Java文件上传功能的好例子。通过深入研究和实践,开发者可以掌握文件上传这一核心的Web开发技能。

    文件上传下载需要的jar包 java文件上传下载

    在Java开发中,文件上传和下载是常见的功能需求,尤其在网络应用中,如网页、桌面应用或移动应用。为了实现这些功能,开发者通常需要引入特定的库或jar包。在这个场景下,"文件上传下载需要的jar包"指的是用于处理...

Global site tag (gtag.js) - Google Analytics