`

用FileUpload做得文件上传

阅读更多
Html代码 复制代码
  1. <form id='myform' enctype="multipart/form-data" action="<%=webapp %>/UploadFileServlet"  
  2.  method="post" target="hidden_frame">  
  3. <input type="file" name="file" id="file" size="10" onchange="this.form.submit();" />  
  4. <iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>  
  5. </form>  
<form id='myform' enctype="multipart/form-data" action="<%=webapp %>/UploadFileServlet"
 method="post" target="hidden_frame">
<input type="file" name="file" id="file" size="10" onchange="this.form.submit();" />
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
</form>

 

webapp是项目的路径名

String webapp=request.getContextPath();

 

后台代码:

 

Java代码 复制代码
  1. import java.io.File;   
  2. import java.io.IOException;   
  3. import java.io.PrintWriter;   
  4. import java.util.ArrayList;   
  5. import java.util.HashMap;   
  6. import java.util.List;   
  7. import java.util.Map;   
  8.   
  9. import javax.servlet.ServletException;   
  10. import javax.servlet.http.HttpServletRequest;   
  11. import javax.servlet.http.HttpServletResponse;   
  12.   
  13. import org.apache.commons.fileupload.FileItem;   
  14. import org.apache.commons.fileupload.disk.DiskFileItemFactory;   
  15. import org.apache.commons.fileupload.servlet.ServletFileUpload;   
  16. import org.apache.log4j.Logger;   
  17.   
  18. import com.siyue.ciap.beans.dic.EnvBean;   
  19. import com.siyue.ciap.dao.cms.UUIDGenerator;   
  20. import com.siyue.ciap.dao.phone.ReadFileUtil;   
  21. import com.siyue.ciap.dao.uitls.ObjectToJSON;   
  22. import com.siyue.ciap.service.uitl.SpringFacesUtil;   
  23.   
  24.   
  25. public class UploadFileServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {   
  26.   
  27.     private static final Logger logger = Logger.getLogger(UploadFileServlet.class);   
  28.        
  29.     protected void doGet(HttpServletRequest request, HttpServletResponse response)   
  30.             throws ServletException, IOException {   
  31.         this.doPost(request, response);   
  32.     }   
  33.   
  34.     protected void doPost(HttpServletRequest request, HttpServletResponse response)   
  35.             throws ServletException, IOException {   
  36.         System.out.println("execute Upload File.................");   
  37.         PrintWriter out = response.getWriter();   
  38.         EnvBean envBean =(EnvBean)SpringFacesUtil   
  39.                .getBean(this.getServletContext(), "EnvBean");   
  40.         String uploadPath = envBean.getEnv().getProperty("upload_dest");//上传的路径   
  41.         UUIDGenerator generator=new UUIDGenerator();   
  42.         DiskFileItemFactory factory = new DiskFileItemFactory();   
  43.         factory.setSizeThreshold(4096);//设置缓冲   
  44.         factory.setRepository(new File(uploadPath));//设置缓冲区目录   
  45.         ServletFileUpload upload = new ServletFileUpload(factory);   
  46.         boolean isMultipart = ServletFileUpload.isMultipartContent(request);   
  47.         upload.setSizeMax(1024000000);   
  48.         List items = new ArrayList();   
  49.         try {   
  50.             items = upload.parseRequest(request);   
  51.             Map rtnMap = new HashMap();   
  52.             for(int i=0;i<items.size();i++) {   
  53.                 FileItem item = (FileItem) items.get(i);   
  54.                 String autoFileName = generator.generate().toString();   
  55.                 if("".equals(item.getName()))continue;   
  56.                 //获得文件名   
  57.                 String fileName = item.getName().substring(item.getName()   
  58.                                .lastIndexOf("\\")+1, item.getName().length());   
  59.                 //获得文件后缀名   
  60.                 String extName = fileName   
  61.                                .substring(fileName.lastIndexOf(".")+1, fileName.length());   
  62.                 //判断文件类型   
  63.                 if(!("xls".equalsIgnoreCase(extName) || "txt".equalsIgnoreCase(extName) ||    
  64.                         "csv".equalsIgnoreCase(extName))) {   
  65.                     out.print("<script>alert('您上传的文件不是excel|txt|csv类型!');</script>");   
  66.                     out.close();   
  67.                 }else {   
  68.                     String fileOnlyName = uploadPath + autoFileName + "." + extName;   
  69.                     item.write(new File(fileOnlyName));   
  70.                     Map excelMap = null;   
  71.                     if("xls".equalsIgnoreCase(extName)) {   
  72.                         System.out.println("fileOnlyName------>"+fileOnlyName);   
  73.                         excelMap = ReadFileUtil.readSheetName(fileOnlyName);   
  74.                     }   
  75.                     rtnMap.put("file", fileOnlyName);   
  76.                     rtnMap.put("sheet", excelMap);   
  77.                     out.print("<script>parent.callBack("+ObjectToJSON.MapToJsonStr(rtnMap)+")</script>");   
  78.                     out.close();   
  79.                 }   
  80.             }   
  81.         } catch (Exception e) {   
  82.             e.printStackTrace();   
  83.         }   
  84.     }   
  85.        
  86. }  
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Logger;

import com.siyue.ciap.beans.dic.EnvBean;
import com.siyue.ciap.dao.cms.UUIDGenerator;
import com.siyue.ciap.dao.phone.ReadFileUtil;
import com.siyue.ciap.dao.uitls.ObjectToJSON;
import com.siyue.ciap.service.uitl.SpringFacesUtil;


public class UploadFileServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {

	private static final Logger logger = Logger.getLogger(UploadFileServlet.class);
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("execute Upload File.................");
		PrintWriter out = response.getWriter();
		EnvBean envBean =(EnvBean)SpringFacesUtil
               .getBean(this.getServletContext(), "EnvBean");
		String uploadPath = envBean.getEnv().getProperty("upload_dest");//上传的路径
		UUIDGenerator generator=new UUIDGenerator();
		DiskFileItemFactory factory = new DiskFileItemFactory();
		factory.setSizeThreshold(4096);//设置缓冲
		factory.setRepository(new File(uploadPath));//设置缓冲区目录
		ServletFileUpload upload = new ServletFileUpload(factory);
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);
		upload.setSizeMax(1024000000);
		List items = new ArrayList();
		try {
			items = upload.parseRequest(request);
			Map rtnMap = new HashMap();
			for(int i=0;i<items.size();i++) {
				FileItem item = (FileItem) items.get(i);
				String autoFileName = generator.generate().toString();
				if("".equals(item.getName()))continue;
				//获得文件名
				String fileName = item.getName().substring(item.getName()
                               .lastIndexOf("\\")+1, item.getName().length());
				//获得文件后缀名
				String extName = fileName
                               .substring(fileName.lastIndexOf(".")+1, fileName.length());
				//判断文件类型
				if(!("xls".equalsIgnoreCase(extName) || "txt".equalsIgnoreCase(extName) || 
						"csv".equalsIgnoreCase(extName))) {
					out.print("<script>alert('您上传的文件不是excel|txt|csv类型!');</script>");
					out.close();
				}else {
					String fileOnlyName = uploadPath + autoFileName + "." + extName;
					item.write(new File(fileOnlyName));
					Map excelMap = null;
					if("xls".equalsIgnoreCase(extName)) {
						System.out.println("fileOnlyName------>"+fileOnlyName);
						excelMap = ReadFileUtil.readSheetName(fileOnlyName);
					}
					rtnMap.put("file", fileOnlyName);
					rtnMap.put("sheet", excelMap);
					out.print("<script>parent.callBack("+ObjectToJSON.MapToJsonStr(rtnMap)+")</script>");
					out.close();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

 

Java代码 复制代码
  1. EnvBean envBean =(EnvBean)SpringFacesUtil   
  2.                .getBean(this.getServletContext(), "EnvBean");   
  3.         String uploadPath = envBean.getEnv().getProperty("upload_dest");//上传的路径  
EnvBean envBean =(EnvBean)SpringFacesUtil
               .getBean(this.getServletContext(), "EnvBean");
		String uploadPath = envBean.getEnv().getProperty("upload_dest");//上传的路径

这句是调Spring找类,根据实际情况变化

Java代码 复制代码
  1. UUIDGenerator generator=new UUIDGenerator();   
  2. String autoFileName = generator.generate().toString();  
UUIDGenerator generator=new UUIDGenerator();
String autoFileName = generator.generate().toString();

这句是给每个上传的文件加一个唯一标示,可用别的方法替代

Java代码 复制代码
  1. ObjectToJSON这个类是自己写一个Object和Json互转的类  
分享到:
评论

相关推荐

    使用fileupload组件实现文件上传功能

    使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...

    .net使用FileUpLoad控件上传文件

    在 ASP.NET Web 应用程序中,经常需要实现文件上传功能,这可以通过使用 `FileUpload` 控件来完成。本文将详细介绍如何使用 `.NET` 中的 `FileUpload` 控件进行单个文件的上传,并存储文件的相关信息,如文件名、...

    C# .NET FileUpload 多文件上传例子

    在这个"C# .NET FileUpload 多文件上传例子"中,我们将探讨两种主要的方法,帮助你理解和掌握这一关键功能。 首先,我们要知道ASP.NET中的`&lt;asp:FileUpload&gt;`控件是实现文件上传的核心组件。它可以允许用户从本地...

    11.文件上传FileUpload 控件

    文件上传 FileUpload 控件,分享

    commons-fileupload实现文件上传

    本篇将详细讲解如何使用Commons FileUpload来实现文件上传的功能。 首先,理解HTTP协议中的多部分数据是至关重要的。在HTML表单提交文件时,通常会使用`enctype="multipart/form-data"`属性,此时,数据会被分割成...

    fileupload插件 上传文件自带进度条

    总的来说,fileupload插件是一个强大的文件上传解决方案,它通过提供进度条功能和自定义限制,提高了用户在上传文件过程中的体验。同时,它也展示了现代Web技术如何与后端服务紧密结合,实现高效、安全的文件上传...

    用FileUpload控件上传文件到数据库

    ### 使用ASP.NET中的FileUpload控件将文件上传至数据库 #### 概述 在Web开发中,经常需要处理用户上传的文件,例如头像、文档等。这些文件可能需要存储在服务器的文件系统中,也可能直接存入数据库。本文将详细...

    使用commons-fileupload实现的文件上传和下载

    通过以上步骤,你可以成功地使用Apache Commons FileUpload实现文件上传和下载功能,并避免中文乱码问题。在实际开发中,还可以结合Spring MVC或Struts等框架,进一步简化代码和提高代码的可维护性。

    asp.net fileupload文件上传

    ASP.NET中的FileUpload控件是用于处理用户上传文件的核心组件,尤其在Web应用程序中,它提供了方便的文件上传功能。以下是对标题和描述中涉及的知识点的详细解释: 1. **FileUpload控件的使用**:在ASP.NET环境中,...

    Common-FileUpload带进度条文件上传

    "Common-FileUpload带进度条文件上传"是一个专门处理这种需求的解决方案,它允许用户在上传文件时看到进度条,提供更好的用户体验。下面我们将详细探讨这个主题以及相关知识点。 1. 文件上传的基本原理:在Web开发...

    commons-fileupload 文件上传 图片上传 demo

    以上就是关于`commons-fileupload`文件上传库的简要介绍,以及如何使用它来实现图片上传功能。这个库极大地简化了Java Web应用程序中文件上传的复杂性,使得开发者可以专注于业务逻辑,而不是底层的文件处理细节。

    fileUpload文件上传组件例子

    本示例中的"fileUpload文件上传组件例子"提供了一个自定义实现的文件上传组件,旨在帮助开发者理解并掌握这一关键功能的实现方式。 首先,我们需要了解文件上传的基本原理。在HTML中,`&lt;input type="file"&gt;`标签...

    Asp.net 2.0 用FileUpload 控件实现多文件上传

    要实现多文件上传,我们需要对FileUpload控件做一些扩展,因为ASP.NET 2.0原生的FileUpload控件仅支持单个文件上传。一种常见的方法是使用HTML5的`&lt;input type="file" multiple /&gt;`特性,这允许用户选择多个文件。...

    使用commons-fileupload上传文件

    通过使用`commons-fileupload`,开发者可以方便地在Java Web应用中实现文件上传功能,而无需关注底层的HTTP协议细节。这个组件提供了丰富的API,支持各种自定义选项,例如内存阈值、临时文件存储位置等,使得文件...

    基于fileupload.js文件上传

    使用fileupload.js,开发者可以轻松地构建出功能丰富的文件上传组件。其主要功能有: 1. **多文件选择**:fileupload.js允许用户一次选择多个文件进行上传,提高了上传效率。 2. **文件预览**:对于支持的文件类型...

    FileUpload控件自动上传

    综上所述,.NET FileUpload控件的自动上传功能结合预览和安全控制,能够为用户提供便捷且安全的文件上传体验。在Visual Studio 2012中实现这些功能,需要对ASP.NET、JavaScript和服务器端文件操作有深入的理解。在...

    fileupload文件上传下载代码示例

    综上所述,"fileupload文件上传下载代码示例"是一个关于使用Java进行文件上传和下载的实践项目。通过学习和理解这些代码,开发者可以掌握在Web应用中处理文件上传和下载的核心技术,从而在实际工作中实现类似功能。

    Struts1 fileupload Struts1文件上传 源码下载

    Struts1的fileupload的文件上传

    FileUpload多文件上传(2.0)

    "FileUpload多文件上传(2.0)"这个主题聚焦于2.0版本的ASP.NET中,如何使用C#来实现用户友好的多文件上传功能。下面将详细阐述这一技术的关键点。 首先,让我们了解`FileUpload`控件。在ASP.NET中,`FileUpload`控件...

    commons-fileupload文件上传实例

    通过以上步骤,你可以使用Apache Commons FileUpload实现简单的文件上传功能。这个库提供了许多高级特性,如内存和磁盘混合存储、自定义文件保存策略等,可以根据实际项目需求进行深入学习和应用。

Global site tag (gtag.js) - Google Analytics