欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Javaweb文件上传

程序员文章站 2022-05-08 17:06:05
...

upload.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
  <!-- 表单提交必须为post ,  get会把表单数据放到地址栏,地址栏最多放4kb左右的大小 -->
  
    <form action="UploadServlet"  method="post" enctype="multipart/form-data">
    	<!--  学号: <input type="text" name="sno" /><br/>
    	姓名: <input type="text" name="sname" /><br/>-->
    	上传照片: <input type="file" name="spicture"  />
    	<br>
    	<input type="submit" value="提交"/>
    </form>
    <p>${informations}</p>
    <!--  <a href="DownloadServlet?filename=图片.jpg">图片</a>  -->
  </body>
</html>

UoloadServlet

 

package servlet;

import java.io.File;
import java.io.IOException;
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.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * Servlet implementation class UploadServlet
 */
public class UploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public UploadServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		try {
			boolean isMultipart = ServletFileUpload.isMultipartContent(request);
			if( isMultipart ){
//				FileItemFactory factory = new DiskFileItemFactory();
				DiskFileItemFactory factory = new DiskFileItemFactory();
				ServletFileUpload upload = new ServletFileUpload(factory);
				String path1 = request.getContextPath();
				String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path1+"/";
				upload.setSizeMax(20480000);  //20000KB  字节B
				List<FileItem> items = upload.parseRequest(request);
				Iterator<FileItem> iter= items.iterator();
				while(iter.hasNext()){
					FileItem item = iter.next();
					String itemName = item.getFieldName();
					int sno = -1;
					String sname = null;
					
					if(item.isFormField()){
						
					}else {
						//文件上传
						//先拿文件名  getFieldname是获取普通表单字段的name值  
						//getName() 是获取文件名
						String fileName = item.getName();    //a.txt  a.docx  a.png
						String ext = fileName.substring(fileName.indexOf(".")+1);
						if(!(ext.equals("png") || ext.equals("gif") || ext.equals("jpg"))){
							System.out.println("图片类型有误!格式只能是png gif jpg");
							request.setAttribute("informations", "图片类型错误"); 
							request.getRequestDispatcher("/daoyuan/upload.jsp").forward(request, response);
							return ;  // 终止
						}
						//获取文件内容并上传
						//定义文件路径 ;制定上传位置
						/*获取服务器路径"D:\\"\\\*/
						//String path = request.getSession().getServletContext().getRealPath("/res");
						String path = request.getSession().getServletContext().getRealPath("/daoyuan/images");
						File file = new File(path , fileName); 
						item.write(file);//上传
						System.out.println(fileName+"上传成功");
//						File fileexiset = new File("path/fileName");
//						if(fileexiset.exists()){
//						}
						request.setAttribute("informations", "上传成功"); 
						request.getRequestDispatcher("/daoyuan/upload.jsp").forward(request, response);
						return;
					}
				}
			}
		} catch (FileUploadBase.SizeLimitExceededException e){
			System.out.println("上传文件大小超过限制!! 最大20000KB");
		}catch (FileUploadException e) {
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

####如果是Servlet2.5    ----》》》记得在web.xml里边配置一下

####如果是Servlet3.0  ----->>>>>直接使用注解就可以啦