/* * UploadVideo.java * */ import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.fileupload.*; import java.io.*; import java.net.*; import java.util.Iterator; import java.util.List; import javax.servlet.*; import javax.servlet.http.*; import org.apache.commons.fileupload.disk.DiskFileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * * @author wanbar */ public class UploadVideo extends HttpServlet { /** * Processes requests for both HTTP GET and POST methods. * @param request servlet request * @param response servlet response */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); } /** * Handles the HTTP GET method. * @param request servlet request * @param response servlet response */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP POST method. * @param request servlet request * @param response servlet response */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); try { /* STEP 1. Handle the incoming request from the client */ // Request parsing using the FileUpload lib from Jakarta Commons // http://commons.apache.org/fileupload/ // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(1000000000); // Parse the request into a list of DiskFileItems List items = upload.parseRequest(request); // The fields we will need for the API request String videoName = ""; String videoDescription = ""; File videoFile = null; String videoFilename = ""; long videoMaxSize = 0; // Iterate through the list of DiskFileItems Iterator iter = items.iterator(); while (iter.hasNext()) { DiskFileItem item = (DiskFileItem) iter.next(); if (item.isFormField()) { if (item.getFieldName().equals("name")) { videoName = item.getString(); } else if (item.getFieldName().equals("desc")) { videoDescription = item.getString(); } } else { videoFile = item.getStoreLocation(); String fileName = item.getName(); videoMaxSize = item.getSize(); } } out.print(videoFilename); /* STEP 2. Assemble the JSON params */ String json = "{\"method\":\"create_video\"" + ", \"params\":{" + "\"token\":" + "W3BbfN5Qty11tzdyBxUAUIAOPldj1FsI8." + ", " + "\"video\":" + "{\"name\":\"" + videoName + "\", " + "\"shortDescription\":\"" + videoDescription + "\"}, " + "\"filename\":\"" + videoFilename + "\", " + "\"maxsize\":\"" + videoMaxSize + "\", " + "}}"; /* STEP 3. Send the request to the Media API */ // Define the url to the api String targetURL = "http://api.brightcove.com/services/post"; // Create the params object required by... Object[] params; if(videoFile == null) { params = new Object[] { "JSON-RPC", json }; } else { params = new Object[] { "JSON-RPC", json, videoFilename, videoFile }; } // ... the ClientHTTPRequest helper class from the ClientHTTP library by Vlad Patryshev // http://www.devx.com/Java/Article/17679/1954?pf=true InputStream in = ClientHttpRequest.post( new java.net.URL(targetURL), params ); // Turn the input stream into a string int bytesRead = 0; byte[] buffer = new byte[1024]; ByteArrayOutputStream ret = new ByteArrayOutputStream(); while ((bytesRead = in.read(buffer)) > 0) { ret.write(buffer, 0, bytesRead); } // print the response from the API String resp = new String(ret.toByteArray()); out.print(resp); } catch (FileUploadException ex) { Logger.getLogger(UploadVideo.class.getName()).log(Level.SEVERE, null, ex); } } /** * Returns a short description of the servlet. */ public String getServletInfo() { return "Short description"; } }