【转载】Java Web实现文件上传功能

转载 2018年04月17日 10:04:44
前端代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
<!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="${pageContext.request.contextPath }/UploadServlet" method="post" enctype="multipart/form-data">  
            <input type="text" name="username">  
            <input type="file" name="upload">  
            <input type="submit" value="提交">  
        </form>   
    </body>  
</html>
后端代码
package demo;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;


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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;


public class UploadServlet extends HttpServlet {
	


	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			//1、创建磁盘文件项工厂
			//获取web根目录下放置缓存文件的文件夹“temp”的物理路径
			String path_temp = this.getServletContext().getRealPath("temp");
			File file =  new File(path_temp) ;
			DiskFileItemFactory factory = new DiskFileItemFactory(1024*1024, file);//1024*1024为设置文件缓存大小
			//也可以new一个空参的factory,随后再设置缓存大小,和缓存位置
			//DiskFileItemFactory factory = new DiskFileItemFactory();
			//factory.setSizeThreshold(1024*1024);
			//factory.setRepository(file);
				
			//2、创建文件上传的核心类
			ServletFileUpload upload = new ServletFileUpload(factory);
			//设置上传文件名称的编码为UTF-8,不设置有可能会出现中文乱码,编码规范要进行设置。
			upload.setHeaderEncoding("UTF-8");
			//判断表单是否是文件上传表单,只是为了演示需要,实际开发中开发人员肯定知道这是不是文件上传表单
			boolean multipartContent = upload.isMultipartContent(request);
			if(multipartContent) {
				//是文件上传的表单,解析request获得文件项集合
				List<FileItem> parseRequest = upload.parseRequest(request);
				if(parseRequest!=null) {
					for(FileItem item :parseRequest) {
						//判断是不是普通表单项
						boolean formField = item.isFormField();
						if(formField) {
							//如果是普通表单项
							String fieldName = item.getFieldName();
							String fieldValue = item.getString("UTF-8");//对普通表单项的内容进行编码
							//当表单是enctype="multipart/form-data"时,request.getParameter相关的方法都失效,所以要用上面的方法获得值
							//String parameter = request.getParameter("username");//获取不到,失效!
							System.out.println("表单值为:"+fieldName+"="+fieldValue);
						}else {
							//如果是文件上传项							
							String name = item.getName();
							System.out.println("文件名为:"+name);
							System.out.println(item);
							//加入判断文件是否上传,如果不加判断,前台没有选择文件,提交后会报IO空指针异常
							if(item.getSize()==0L) {
								response.setContentType("text/html;charset=UTF-8");
								response.getWriter().write("请上传文件");
								return;
							}
							if(name=="") {
								response.setContentType("text/html;charset=UTF-8");
								response.getWriter().write("文件名不能为空");
								return;
							}
							InputStream in = item.getInputStream();
							String path_store = this.getServletContext().getRealPath("upload");
							OutputStream out = new FileOutputStream(path_store+"/"+name);
							IOUtils.copy(in, out);
							in.close();
							out.close();
							//删除临时文件
							item.delete();
						}
						
					}					
				}
				response.setContentType("text/html;charset=UTF-8");
				response.getWriter().write("是文件上传");
				
			}else {
				//不是文件上传表单,可以使用原始的获取表单数据方式request.getParameter();
				//只是为了演示需要,实际开发中开发人员肯定知道这是不是文件上传表单
				Map<String, String[]> parameterMap = request.getParameterMap();
				response.setContentType("text/html;charset=UTF-8");
				response.getWriter().write("不是文件上传表单");
			}
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
} 

原文链接:https://blog.csdn.net/javae100/article/details/79938923

转载请注明出处!


javaweb实现上传功能

e安教育 2017-03-08 09:42 1.要实现上传功能要注意以下几点 ①对于表单的限制 ②对于servlet的限制 只要添加了enctype="multipart/form-data"...
  • u011277123
  • u011277123
  • 2017-03-20 19:41:02
  • 1527

java web文件上传功能实现

鉴于很多刚毕业做web的同学,可能需要做一些譬如excel,pdf之类文档上传的功能,现在我们就来复习一下struts2如何将单个文件上传至服务器。 代码写的比较简单,适合刚入手的同学。 准备工作:上...
  • wudalang_gd
  • wudalang_gd
  • 2016-02-28 10:49:56
  • 960

java web项目实现上传功能

一直想自己做一下这个功能,这次有机会在网上找了段代码,没想到直接拿来就成功了! 在这里记录下,防止原帖删除! 出处:http://www.cnblogs.com/xdp-gacl/p/420009...
  • dppass
  • dppass
  • 2017-05-26 18:28:23
  • 932

这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在Web应用系统开发中,文件上传和下载功能是非常常用的功能,需要的朋友可以参考下

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。   对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如...
  • jiliang_0403
  • jiliang_0403
  • 2017-03-10 15:26:39
  • 1040

javaweb简单实现文件上传与下载源代码

  • 2016年09月18日 20:10
  • 139KB
  • 下载

JavaWeb实现简单的文件上传下载

javaweb,文件上传下载
  • shafatutu
  • shafatutu
  • 2016-05-16 20:47:39
  • 2335

java基础 (说明:转载)

lesson1优先级 (shape)a.b   .的优先级高PPT1.Java代码是解释执行的,我们使用Java编译器将Java代码编译成字节码,这是一种中间代码, 然后由Java解释器解释执行。而C...
  • courage1
  • courage1
  • 2007-04-07 10:28:00
  • 910

web文件上传

  • 2015年07月18日 16:17
  • 170KB
  • 下载

java web 一行代码实现文件上传下载

每当要实现文件上传下载的功能时,都要复制粘贴拼凑代码。如果用了不同的框架,代码还不一样,配置啥的一堆,甚是繁琐,不喜欢。科学家们喜欢把纷繁复杂的自然现象总结为一个个简洁的公式,我们也来试试,把上传下载...
  • u013314786
  • u013314786
  • 2015-11-08 20:22:10
  • 3317

struts2中实现文件上传功能

在web项目中,文件上传、头像上传这样的功能经常是要用到的,下面就以在struts2中实现文件上传功能为例子,简单地理一下文件上传功能的编码思路。 项目目录结构 项目源代码 web.x...
  • wangcunhuazi
  • wangcunhuazi
  • 2014-10-30 21:45:32
  • 1423
收藏助手
不良信息举报
您举报文章:【转载】Java Web实现文件上传功能
举报原因:
原因补充:

(最多只允许输入30个字)