package your.app;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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.tomcat.util.http.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class UploadServlet
*
*/
@WebServlet("/upload")
@MultipartConfig(maxFileSize = 1000000)
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
super();
}
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
super.service(arg0, arg1);
}
protected void doPut(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
File tempFile = null;
InputStream input = null;
if (ServletFileUpload.isMultipartContent(request)) {
Part filePart = request.getPart("mydoc");
String filename = getFilename(filePart);
System.out.println("filename=" + filename);
input = filePart.getInputStream();
tempFile = new File(System.getProperty("java.io.tmpdir"), filename);
} else {
String fname = request.getParameter("fname");
System.out.println("fname=" + fname);
int p = fname.lastIndexOf('.');
String ext = p != -1 ? fname.substring(p) : ".tmp";
tempFile = File.createTempFile("upload", ext);
input = request.getInputStream();
}
System.out.println("tempFile="+ tempFile);
OutputStream output = new FileOutputStream(tempFile);
try {
byte[] buffer = new byte[1024];
int length = 0;
while ((length = input.read(buffer)) != -1) {
output.write(buffer, 0, length);
}
output.flush();
} finally {
try {
input.close();
} catch (IOException ignored) {
}
try {
output.close();
} catch (IOException ignored) {
}
}
}
private static String getFilename(Part part) {
for (String cd : part.getHeader("content-disposition").split(";")) {
if (cd.trim().startsWith("filename")) {
String filename = cd.substring(cd.indexOf('=') + 1).trim()
.replace("\"", "");
return filename.substring(filename.lastIndexOf('/') + 1)
.substring(filename.lastIndexOf('\\') + 1); // MSIE fix.
}
}
return null;
}
}