package org.catrobat.html5player.server; import java.io.IOException; import java.io.InputStream; //import java.util.zip.ZipInputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.codec.binary.Base64; import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.catrobat.html5player.client.CatrobatDebug; public class FileUpload extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletFileUpload upload = new ServletFileUpload(); try { FileItemIterator iter = upload.getItemIterator(request); CatrobatDebug.debug("UploadServlet iter:" + iter); while (iter.hasNext()) { FileItemStream item = iter.next(); CatrobatDebug.debug("Field Name: " + item.getFieldName()); CatrobatDebug.debug("Name: " + item.getName()); CatrobatDebug.debug("is form field: " + item.isFormField()); InputStream stream = item.openStream(); //ZipInputStream zip = new ZipInputStream(stream); ProjectData pd = LoadUtils.loadDatafromZipStream(new ZipArchiveInputStream(stream)); HttpSession session = request.getSession(); session.setAttribute("projectdata", pd); response.setStatus(HttpServletResponse.SC_CREATED); response.getWriter().print("The file was created successfully."); response.flushBuffer(); } } catch (Exception e) { throw new RuntimeException(e); } } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String name = req.getParameter("name"); HttpSession session = req.getSession(); ProjectData pd = (ProjectData) session.getAttribute("projectdata"); String fs = pd.getImage(name); CatrobatDebug.debug("Get File Name: " + name); if (fs == null) { fs = pd.getSound(name); } if (fs == null) { res.getWriter().print("File not found!"); res.flushBuffer(); } String type = fs.substring(5, fs.indexOf(";base64,")); fs = fs.substring(fs.indexOf(',') + 1);// fs.replace("data:image/png;base64,", ""); byte[] buffer = Base64.decodeBase64(fs.getBytes()); res.setContentType(type); res.getOutputStream().write(buffer); } }