package zall; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.fileupload.FileItem; import zall.bean.*; import zutil.db.DBConnection; import zutil.io.file.FileUtil; import zutil.jee.upload.AjaxFileUpload; import zutil.log.LogUtil; public class UploadServlet extends AjaxFileUpload { private static final Logger logger = LogUtil.getLogger(); private static final long serialVersionUID = 1L; private static final Set VIDEO_EXT = Collections.unmodifiableSet(new HashSet(Arrays.asList( "avi", "mp4", "mpeg", "mpeg", "divx", "xvid", "wmv", "mov", "flv", "m4v"))); @Override public String getProgressHTML() { return "" + "
" + " " + " " + " Unknown: Unknown - Unknown" + "
" + " " + "
" + "
" + "
" + "
" + " 0 KB/ 0 KB " + " - Speed: 400 KB/s" + "
"; } @Override public void doUpload(HttpServletRequest request, HttpServletResponse response, Map fields, List files) throws ServletException { DBConnection db = null; try { HttpSession session = request.getSession(); db = Zallery.getDB(); User user = (User) session.getAttribute("user"); // Check if user is authentication if (user != null) { Folder folder = Folder.load(db, Long.parseLong(fields.get("folder"))); // Handle files for (FileItem item : files) { try { String ext = FileUtil.getFileExtension(item.getName()).toLowerCase(); Media media; if (VIDEO_EXT.contains(ext)) { logger.fine("Video upload detected, extension: " + ext); media = new Video(); } else { logger.fine("Image upload detected, extension: " + ext); media = new Image(); } media.setTitle(item.getName()); media.setFolder(folder); media.setOwner(user); media.setFile(item); media.save(db); logger.fine("Media upload successful: " + item.getName()); } catch (Exception e) { logger.log(Level.WARNING, "Error: Creating new media(" + item.getName() + ")", e); e.printStackTrace(); } item.delete(); } response.getWriter().print("OK"); } else response.getWriter().print("Authentication Error"); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } finally { if (db != null) db.close(); } } }