package org.openrosa.server;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;
/**
* Servlet that handles opening of files.
*
* @author daniel
*
*/
public class FileOpenServlet extends HttpServlet{
public static final long serialVersionUID = 111111111111113L;
private final String KEY_FILE_CONTENTS = "FileContents";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", -1);
response.setHeader("Cache-Control", "no-store");
response.setContentType("text/xml; charset=utf-8");
response.getOutputStream().print((String)request.getSession().getAttribute(KEY_FILE_CONTENTS));
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
if(!ServletFileUpload.isMultipartContent(request))
return;
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
upload.setSizeMax(1000000);
FileItemIterator items = upload.getItemIterator(request);
while (items.hasNext()) {
FileItemStream item = items.next();
if(item.isFormField())
continue;
request.getSession().setAttribute(KEY_FILE_CONTENTS, IOUtils.toString(item.openStream(), "UTF-8"));
break;
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}