Subversion Repositories bacoAlunos

Rev

Rev 1945 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web.controllers.utils;

import jomm.utils.BytesUtils;
import jomm.utils.FilesUtils;
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;
import org.apache.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.estgweb.utils.Globals;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

/**
 * Created by jorgemachado on 27/12/16.
 */

public class MultiUploadServlet extends HttpServlet
{
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(MultiUploadServlet.class);
    @1.5.0/docs/api/java/lang/Override.html">Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException
    {
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (!isMultipart) {
            JSONObject jsonObject = new JSONObject();
            JSONArray filesUploaded = new JSONArray();
            try {
                jsonObject.put("service","fail");
                jsonObject.put("exception","Only accept multiparted resquests");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            1.5.0/docs/api/java/io/PrintWriter.html">PrintWriter pw = response.getWriter();
            pw.print(jsonObject.toString());
        }
        else{
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            5+0%2Fdocs%2Fapi+List">List items = null;
            try {
                items = upload.parseRequest(request);
            } catch (FileUploadException e) {
                e.printStackTrace();
            }

            FilesUploadResult result = new FilesUploadResult();
            1.5.0/docs/api/java/util/Iterator.html">Iterator itr = items.iterator();
            while (itr.hasNext()) {
                FileItem item = (FileItem) itr.next();
                if (item.isFormField()) {
                } else {
                    try {
                        FileUploaded file = new FileUploaded();

                        1.5.0/docs/api/java/lang/String.html">String tmpName = request.getSession().getId() + "_" + BytesUtils.generateHexKey();
                        file.setTmpName(tmpName);
                        file.setFileName(item.getName());
                        file.setExtension(FilesUtils.getExtension(file.getFileName()));
                        file.setFileSize(item.getSize());
                        file.setContentType(item.getContentType());
                        1.5.0/docs/api/java/io/File.html">File savedFile = new 1.5.0/docs/api/java/io/File.html">File(Globals.TMP_DIR + 1.5.0/docs/api/java/io/File.html">File.separator + tmpName);
                        item.write(savedFile);
                        result.getUploadedFiles().add(file);
                    } catch (1.5.0/docs/api/java/lang/Exception.html">Exception e) {
                        e.printStackTrace();
                    }
                }
            }


            result.setService("ok");
            1.5.0/docs/api/java/lang/String.html">String json = FilesUploadResult.serializeJson(result);
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            1.5.0/docs/api/java/io/PrintWriter.html">PrintWriter pw = response.getWriter();
            pw.write(json);

        }

    }


    private void sendError(1.5.0/docs/api/java/lang/Throwable.html">Throwable e,HttpServletRequest request,HttpServletResponse response) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException {

        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        JSONObject errorObject = new JSONObject();
        errorObject.put("service","error");
        errorObject.put("exception",e.toString());
        1.5.0/docs/api/java/io/PrintWriter.html">PrintWriter pw = response.getWriter();
        pw.write(errorObject.toString());
    }

}