服务端:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package me.ypqiao.javaee6sample.listener;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* @author ypqiao
*/
@MultipartConfig(location = "c:/upload")
@WebServlet(name = "UploadServlet", urlPatterns = {"/UploadServlet"})
public class UploadServlet extends HttpServlet {
private static Log log = LogFactory.getLog(UploadServlet.class);
/**
* Process the upload request,
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");;
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
Collection<Part> parts = request.getParts();
for(Part part : parts){
// print file info
out.print("Part Name: "+part.getName()+"<br/>");
out.print("File Name: "+getFileName(part)+"<br/>");
out.print("File Size: "+part.getSize()+"<br/>");
// save the file uploaded
part.write(getFileName(part));
// delete the tmp file
part.delete();
}
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* get file name from part header
* the Part.getName() is for get part name instead,not file name
*
* @param part
* @return
*/
private String getFileName( Part part ){
if( part == null ){
throw new RuntimeException(" invalid part ");
}
for( String item :part.getHeader("content-disposition").
trim().split(";")){
item = item.trim();
if(item.startsWith("filename"))
return item.substring(item.indexOf("=")+1).replace("\"", "");
}
return null;
}
}
页面:
<%--
Document : upuload.jsp
Created on : Aug 15, 2013, 7:46:02 PM
Author : issuser
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>File Upload</title>
</head>
<body>
<h3>File Upload</h3>
<hr/>
<form action="UploadServlet" method="post" enctype="multipart/form-data">
File: <input type="file" name="file"/><input type="submit"/>
</form>
</body>
</html>