package
com.bluelotussoftware.apache.commons.fileupload.example;
import
java.io.File;
import
java.io.IOException;
import
java.io.PrintWriter;
import
java.util.Iterator;
import
java.util.List;
import
java.util.logging.Level;
import
java.util.logging.Logger;
import
javax.servlet.ServletException;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.commons.fileupload.DiskFileUpload;
import
org.apache.commons.fileupload.FileItem;
import
org.apache.commons.fileupload.FileUpload;
import
org.apache.commons.fileupload.FileUploadException;
/**
*
* @author Unknown
* @author Vikram Goyal
* @author John Yeary
* @version 1.0
*/
public
class
ApacheCommonsFileUploadServlet
extends
HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected
void
processRequest(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
response.setContentType(
"text/plain;charset=UTF-8"
);
PrintWriter out = response.getWriter();
try
{
boolean
isMultipart = FileUpload.isMultipartContent(request);
log(
"content-length: "
+ request.getContentLength());
log(
"method: "
+ request.getMethod());
log(
"character encoding: "
+ request.getCharacterEncoding());
if
(isMultipart) {
DiskFileUpload upload =
new
DiskFileUpload();
List items =
null
;
try
{
items = upload.parseRequest(request);
log(
"items: "
+ items.toString());
}
catch
(FileUploadException ex) {
log(
"Failed to parse request"
, ex);
}
Iterator itr = items.iterator();
while
(itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if
(item.isFormField()) {
String fieldName = item.getFieldName();
if
(fieldName.equals(
"name"
)) {
out.print(
"Thank You: "
+ item.getString());
}
}
else
{
File fullFile =
new
File(item.getName());
File savedFile =
new
File(getServletContext().getRealPath(
"/"
), fullFile.getName());
try
{
item.write(savedFile);
}
catch
(Exception ex) {
log(
"Failed to save file"
, ex);
}
}
}
}
}
finally
{
out.close();
}
}
/**
* 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);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public
String getServletInfo() {
return
"Short description"
;
}
}