package ppj09.gwt.swapweb.server;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.GregorianCalendar;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class ImageUploadHandler extends HttpServlet {
final static String UPLOADDIR = "uploads/";
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
ArrayList l = getFileItem(req);
FileItem uploadItem = (FileItem) l.get(0);
if(uploadItem == null) {
resp.getWriter().write("NO-SCRIPT-DATA");
return;
}
String filename = uploadItem.getName();
int indexPoint = filename.lastIndexOf(".");
int length = filename.length();
String extension = filename.substring(indexPoint, length);
GregorianCalendar cal = new GregorianCalendar();
String newFileName = cal.getTimeInMillis()+extension;
System.out.println("FILENAME: " + newFileName);
File f = new File(UPLOADDIR + newFileName);
try {
uploadItem.write(f);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DataBankerQueries dbq = new DataBankerQueries();
boolean saved = dbq.saveImageToArticle(UPLOADDIR + newFileName, (String)l.get(1));
if(saved) {
resp.getWriter().write(new String("Ihr Artikel wurde erfolgreich erstellt"));
} else {
resp.getWriter().write(new String("Ihr Bild konnte nicht in der Datenbank gespeichert werden"));
}
}
private ArrayList getFileItem(HttpServletRequest req) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
ArrayList l = new ArrayList();
try {
List items = upload.parseRequest(req);
Iterator it = items.iterator();
FileItem i = null;
while(it.hasNext()) {
FileItem item = (FileItem) it.next();
if(!item.isFormField() && "uploadFormElement".equals(item.getFieldName())) {
l.add(item);
}
if("uploadHiddenElement".equals(item.getFieldName())) {
l.add(item.getString());
}
}
return l;
}
catch(FileUploadException e){
return null;
}
}
}