Question Comment télécharger des fichiers sur le serveur en utilisant JSP / Servlet?


Comment puis-je télécharger des fichiers sur le serveur à l'aide de JSP / Servlet? J'ai essayé ceci:

<form action="upload" method="post">
    <input type="text" name="description" />
    <input type="file" name="file" />
    <input type="submit" />
</form>

Cependant, je reçois seulement le nom du fichier, pas le contenu du fichier. Quand j'ajoute enctype="multipart/form-data" au <form>, puis request.getParameter() résultats null.

Pendant la recherche, je suis tombé sur Apache Common FileUpload. J'ai essayé ceci:

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request); // This line is where it died.

Malheureusement, le servlet a jeté une exception sans un message clair et cause. Voici la pile de pile:

SEVERE: Servlet.service() for servlet UploadServlet threw exception
javax.servlet.ServletException: Servlet execution threw an exception
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:313)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:637)

609
2018-03-11 04:07


origine


Réponses:


introduction

Pour parcourir et sélectionner un fichier à télécharger, vous avez besoin d'un HTML <input type="file"> champ dans le formulaire. Comme indiqué dans le Spécification HTML vous devez utiliser le POST méthode et la enctype attribut du formulaire doit être défini sur "multipart/form-data".

<form action="upload" method="post" enctype="multipart/form-data">
    <input type="text" name="description" />
    <input type="file" name="file" />
    <input type="submit" />
</form>

Après avoir soumis un tel formulaire, les données du formulaire binaire en plusieurs parties sont disponibles dans le corps de la demande dans un format différent que lorsque le enctype n'est pas défini.

Avant Servlet 3.0, l'API Servlet ne prenait pas en charge nativement multipart/form-data. Il ne supporte que le format par défaut enctype de application/x-www-form-urlencoded. le request.getParameter() et les consorts reviendraient tous null lors de l'utilisation de données de formulaire en plusieurs parties. C'est là que le bien connu Apache Commons FileUpload est entré dans l'image.

Ne pas l'analyser manuellement!

Vous pouvez en théorie analyser le corps de la demande vous-même en fonction de ServletRequest#getInputStream(). Cependant, il s'agit d'un travail précis et fastidieux qui nécessite une connaissance précise RFC2388. Vous ne devriez pas essayer de le faire vous-même ou copypaster un code local sans bibliothèque trouvé ailleurs sur Internet. Beaucoup de sources en ligne ont échoué dans ce domaine, comme roseindia.net. Voir également téléchargement de fichier pdf. Vous devriez plutôt utiliser une vraie bibliothèque qui est utilisée (et testée implicitement!) Par des millions d'utilisateurs pendant des années. Une telle bibliothèque a prouvé sa robustesse.

Lorsque vous utilisez déjà Servlet 3.0 ou une version plus récente, utilisez l'API native

Si vous utilisez au moins Servlet 3.0 (Tomcat 7, Jetty 9, JBoss AS 6, GlassFish 3, etc.), vous pouvez simplement utiliser l'API standard fournie HttpServletRequest#getPart() pour collecter les éléments de données de formulaire multipart individuels (la plupart des implémentations de Servlet 3.0 utilisent réellement Apache Commons FileUpload sous les couvertures pour cela!). En outre, les champs de formulaire normaux sont disponibles par getParameter() la manière habituelle.

Commencez par annoter votre servlet avec @MultipartConfig afin de le laisser reconnaître et soutenir multipart/form-data demandes et ainsi obtenir getPart() travailler:

@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
    // ...
}

Ensuite, mettre en œuvre son doPost() comme suit:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String description = request.getParameter("description"); // Retrieves <input type="text" name="description">
    Part filePart = request.getPart("file"); // Retrieves <input type="file" name="file">
    String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); // MSIE fix.
    InputStream fileContent = filePart.getInputStream();
    // ... (do your job here)
}

Noter la Path#getFileName(). C'est une correction MSIE quant à l'obtention du nom de fichier. Ce navigateur envoie de manière incorrecte le chemin de fichier complet le long du nom au lieu de seulement le nom de fichier.

Dans le cas où vous avez un <input type="file" name="file" multiple="true" /> pour le téléchargement multi-fichiers, collectez-les comme ci-dessous (malheureusement, il n'existe pas de méthode telle que request.getParts("file")):

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // ...
    List<Part> fileParts = request.getParts().stream().filter(part -> "file".equals(part.getName())).collect(Collectors.toList()); // Retrieves <input type="file" name="file" multiple="true">

    for (Part filePart : fileParts) {
        String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); // MSIE fix.
        InputStream fileContent = filePart.getInputStream();
        // ... (do your job here)
    }
}

Lorsque vous n'êtes pas encore sur Servlet 3.1, obtenez manuellement le nom du fichier soumis

Notez que Part#getSubmittedFileName() a été introduit dans Servlet 3.1 (Tomcat 8, Jetty 9, WildFly 8, GlassFish 4, etc.). Si vous n'êtes pas encore sur Servlet 3.1, vous avez besoin d'une méthode utilitaire supplémentaire pour obtenir le nom de fichier soumis.

private static String getSubmittedFileName(Part part) {
    for (String cd : part.getHeader("content-disposition").split(";")) {
        if (cd.trim().startsWith("filename")) {
            String fileName = cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
            return fileName.substring(fileName.lastIndexOf('/') + 1).substring(fileName.lastIndexOf('\\') + 1); // MSIE fix.
        }
    }
    return null;
}
String fileName = getSubmittedFileName(filePart);

Notez le correctif MSIE quant à l'obtention du nom de fichier. Ce navigateur envoie de manière incorrecte le chemin de fichier complet le long du nom au lieu de seulement le nom de fichier.

Lorsque vous n'êtes pas encore sur Servlet 3.0, utilisez Apache Commons FileUpload

Si vous n'êtes pas encore sur Servlet 3.0 (n'est-il pas temps de mettre à niveau?), La pratique courante consiste à utiliser Apache Commons FileUpload pour analyser les demandes de données de formulaire multpart. Il a un excellent Mode d'emploi et FAQ (Passez soigneusement les deux). Il y a aussi le O'Reilly ("cos") MultipartRequest, mais il a quelques bugs (mineurs) et n'est plus maintenu activement depuis des années. Je ne recommanderais pas de l'utiliser. Apache Commons FileUpload est encore activement maintenu et actuellement très mature.

Afin d'utiliser Apache Commons FileUpload, vous devez avoir au moins les fichiers suivants dans votre webapp /WEB-INF/lib:

Votre tentative initiale a échoué très probablement parce que vous avez oublié les IO communes.

Voici un exemple de coup d'envoi comment le doPost() de votre UploadServlet peut ressembler à l'utilisation d'Apache Commons FileUpload:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
        for (FileItem item : items) {
            if (item.isFormField()) {
                // Process regular form field (input type="text|radio|checkbox|etc", select, etc).
                String fieldName = item.getFieldName();
                String fieldValue = item.getString();
                // ... (do your job here)
            } else {
                // Process form file field (input type="file").
                String fieldName = item.getFieldName();
                String fileName = FilenameUtils.getName(item.getName());
                InputStream fileContent = item.getInputStream();
                // ... (do your job here)
            }
        }
    } catch (FileUploadException e) {
        throw new ServletException("Cannot parse multipart request.", e);
    }

    // ...
}

Il est très important que vous n'appeliez pas getParameter(), getParameterMap(), getParameterValues(), getInputStream(), getReader(), etc sur la même demande à l'avance. Sinon, le conteneur de servlet lira et analysera le corps de la requête et ainsi Apache Commons FileUpload obtiendra un corps de requête vide. Voir aussi a.o. ServletFileUpload # parseRequest (request) retourne une liste vide.

Noter la FilenameUtils#getName(). C'est une correction MSIE quant à l'obtention du nom de fichier. Ce navigateur envoie de manière incorrecte le chemin de fichier complet le long du nom au lieu de seulement le nom de fichier.

Alternativement, vous pouvez également envelopper tout cela dans un Filter qui analyse tous automagiquement et remettre les choses dans le parametermap de la demande afin que vous puissiez continuer à utiliser request.getParameter() la manière habituelle et récupérer le fichier téléchargé par request.getAttribute(). Vous pouvez trouver un exemple dans cet article de blog.

Solution de contournement pour bug de GlassFish3 getParameter() toujours en revenant null

Notez que les versions de Glassfish antérieures à 3.1.2 un bug où dans le getParameter() retourne toujours null. Si vous ciblez un tel conteneur et que vous ne pouvez pas le mettre à niveau, vous devez extraire la valeur de getPart() avec l'aide de cette méthode utilitaire:

private static String getValue(Part part) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(part.getInputStream(), "UTF-8"));
    StringBuilder value = new StringBuilder();
    char[] buffer = new char[1024];
    for (int length = 0; (length = reader.read(buffer)) > 0;) {
        value.append(buffer, 0, length);
    }
    return value.toString();
}
String description = getValue(request.getPart("description")); // Retrieves <input type="text" name="description">

Enregistrement du fichier téléchargé (n'utilisez pas getRealPath() ni part.write()!)

Dirigez-vous vers les réponses suivantes pour plus de détails sur la façon d'enregistrer correctement les résultats obtenus InputStream (la fileContent variable comme indiqué dans les extraits de code ci-dessus) sur le disque ou la base de données:

Servir le fichier téléchargé

Dirigez-vous vers les réponses suivantes pour plus de détails sur la manière de servir correctement le fichier sauvegardé à partir du disque ou de la base de données au client:

Ajaxifier le formulaire

Dirigez-vous vers les réponses suivantes pour télécharger en utilisant Ajax (et jQuery). Notez que le code de servlet pour collecter les données de formulaire n'a pas besoin d'être modifié pour cela! Seule la manière dont vous répondez peut être modifiée, mais c'est plutôt trivial (c'est-à-dire au lieu de transférer vers JSP, il suffit d'imprimer du JSON ou du XML ou même du texte brut en fonction de ce que attend le script responsable de l'appel Ajax).


J'espère que tout cela aide :)


1072
2018-03-11 12:27



Si vous utilisez Spring MVC, voici comment: (Je laisse ceci ici au cas où quelqu'un le trouverait utile).

Utilisez un formulaire avec enctype attribut défini sur "multipart/form-data"(Identique à la réponse de BalusC)

<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="Upload"/>
</form>

Dans votre contrôleur, mappez le paramètre de requête file à MultipartFile tapez comme suit:

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public void handleUpload(@RequestParam("file") MultipartFile file) throws IOException {
    if (!file.isEmpty()) {
            byte[] bytes = file.getBytes(); // alternatively, file.getInputStream();
            // application logic
    }
}

Vous pouvez obtenir le nom de fichier et la taille en utilisant MultipartFilede getOriginalFilename() et getSize().

J'ai testé cela avec la version Spring 4.1.1.RELEASE.


24
2017-08-26 12:39



Vous avez besoin de common-io.1.4.jar fichier à inclure dans votre lib répertoire, ou si vous travaillez dans un éditeur, comme NetBeans, alors vous devez aller aux propriétés du projet et ajoutez simplement le fichier JAR et vous aurez terminé.

Pour obtenir le common.io.jar fichier suffit de google ou tout simplement aller à l'Apache Matou site Web où vous obtenez l'option pour un téléchargement gratuit de ce fichier. Mais rappelez-vous une chose: téléchargez le fichier ZIP binaire si vous êtes un utilisateur Windows.


12
2018-05-17 11:11



J'utilise Servlet commun pour chaque Formulaire Html s'il a des pièces jointes ou non. Cette servlet renvoie un TreeMap où les clés sont jsp name Les paramètres et les valeurs sont User Inputs et enregistre toutes les pièces jointes dans le répertoire fixe et plus tard vous renommez le répertoire de votre choix. Ici Connexions est notre interface personnalisée ayant un objet de connexion. Je crois que ceci vous aidera

public class ServletCommonfunctions extends HttpServlet implements
        Connections {

    private static final long serialVersionUID = 1L;

    public ServletCommonfunctions() {}

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException {}

    public SortedMap<String, String> savefilesindirectory(
            HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        // Map<String, String> key_values = Collections.synchronizedMap( new
        // TreeMap<String, String>());
        SortedMap<String, String> key_values = new TreeMap<String, String>();
        String dist = null, fact = null;
        PrintWriter out = response.getWriter();
        File file;
        String filePath = "E:\\FSPATH1\\2KL06CS048\\";
        System.out.println("Directory Created   ????????????"
            + new File(filePath).mkdir());
        int maxFileSize = 5000 * 1024;
        int maxMemSize = 5000 * 1024;
        // Verify the content type
        String contentType = request.getContentType();
        if ((contentType.indexOf("multipart/form-data") >= 0)) {
            DiskFileItemFactory factory = new DiskFileItemFactory();
            // maximum size that will be stored in memory
            factory.setSizeThreshold(maxMemSize);
            // Location to save data that is larger than maxMemSize.
            factory.setRepository(new File(filePath));
            // Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factory);
            // maximum file size to be uploaded.
            upload.setSizeMax(maxFileSize);
            try {
                // Parse the request to get file items.
                @SuppressWarnings("unchecked")
                List<FileItem> fileItems = upload.parseRequest(request);
                // Process the uploaded file items
                Iterator<FileItem> i = fileItems.iterator();
                while (i.hasNext()) {
                    FileItem fi = (FileItem) i.next();
                    if (!fi.isFormField()) {
                        // Get the uploaded file parameters
                        String fileName = fi.getName();
                        // Write the file
                        if (fileName.lastIndexOf("\\") >= 0) {
                            file = new File(filePath
                                + fileName.substring(fileName
                                        .lastIndexOf("\\")));
                        } else {
                            file = new File(filePath
                                + fileName.substring(fileName
                                        .lastIndexOf("\\") + 1));
                        }
                        fi.write(file);
                    } else {
                        key_values.put(fi.getFieldName(), fi.getString());
                    }
                }
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
        return key_values;
    }
}

9
2018-01-08 05:50



Sans composant ou bibliothèque externe dans Tomcat 6 o 7

Activation du téléchargement dans le web.xml fichier:

http://joseluisbz.wordpress.com/2014/01/17/manually-installing-php-tomcat-and-httpd-lounge/#Enabling%20File%20Uploads.

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <multipart-config>
      <max-file-size>3145728</max-file-size>
      <max-request-size>5242880</max-request-size>
    </multipart-config>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

COMME VOUS POUVEZ LE VOIR:

    <multipart-config>
      <max-file-size>3145728</max-file-size>
      <max-request-size>5242880</max-request-size>
    </multipart-config>

Téléchargement de fichiers à l'aide de JSP. Des dossiers:

Dans le fichier html

<form method="post" enctype="multipart/form-data" name="Form" >

  <input type="file" name="fFoto" id="fFoto" value="" /></td>
  <input type="file" name="fResumen" id="fResumen" value=""/>

Dans le fichier JSP ou Servlet

    InputStream isFoto = request.getPart("fFoto").getInputStream();
    InputStream isResu = request.getPart("fResumen").getInputStream();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte buf[] = new byte[8192];
    int qt = 0;
    while ((qt = isResu.read(buf)) != -1) {
      baos.write(buf, 0, qt);
    }
    String sResumen = baos.toString();

Modifiez votre code pour les exigences de servlet, comme taille maximale du fichier, max-request-size  et d'autres options que vous pouvez définir ...


7
2018-01-25 05:44



Pour Spring MVC J'ai essayé pendant des heures de le faire et a réussi à avoir une version plus simple qui a travaillé pour prendre la forme d'entrée à la fois des données et des images.

<form action="/handleform" method="post" enctype="multipart/form-data">
  <input type="text" name="name" />
  <input type="text" name="age" />
  <input type="file" name="file" />
  <input type="submit" />
</form>

Contrôleur à gérer

@Controller
public class FormController {
    @RequestMapping(value="/handleform",method= RequestMethod.POST)
    ModelAndView register(@RequestParam String name, @RequestParam int age, @RequestParam MultipartFile file)
            throws ServletException, IOException {

        System.out.println(name);
        System.out.println(age);
        if(!file.isEmpty()){
            byte[] bytes = file.getBytes();
            String filename = file.getOriginalFilename();
            BufferedOutputStream stream =new BufferedOutputStream(new FileOutputStream(new File("D:/" + filename)));
            stream.write(bytes);
            stream.flush();
            stream.close();
        }
        return new ModelAndView("index");
    }
}

J'espère que cela aide :)


7
2017-07-15 19:42



Une autre source de ce problème se produit si vous utilisez Geronimo avec son Tomcat intégré. Dans ce cas, après de nombreuses itérations de test commons-io et commons-fileupload, le problème provient d'un chargeur de classe parent gérant les jars commons-xxx. Cela doit être évité. L'accident s'est toujours produit à:

fileItems = uploader.parseRequest(request);

Notez que le type List de fileItems a changé avec la version actuelle de commons-fileupload pour être spécifiquement List<FileItem>par opposition aux versions antérieures où il était générique List.

J'ai ajouté le code source de commons-fileupload et de commons-io dans mon projet Eclipse pour tracer l'erreur réelle et finalement avoir un aperçu. Tout d'abord, l'exception lancée est de type Throwable et non l'exception FileIOException déclarée ni même Exception (celles-ci ne seront pas piégées). Deuxièmement, le message d'erreur est obfuscatory en ce qu'il a déclaré la classe non trouvée parce que axis2 n'a pas pu trouver commons-io. Axis2 n'est pas du tout utilisé dans mon projet mais existe en tant que dossier dans le sous-répertoire Geronimo repository dans le cadre de l'installation standard.

Enfin, j'ai trouvé 1 place qui a posé une solution de travail qui a résolu avec succès mon problème. Vous devez masquer les fichiers JAR du chargeur parent dans le plan de déploiement. Cela a été mis dans geronimo-web.xml avec mon fichier complet montré ci-dessous.

Pasted from <http://osdir.com/ml/user-geronimo-apache/2011-03/msg00026.html> 



<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<web:web-app xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0" xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-2.0" xmlns:name="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pers="http://java.sun.com/xml/ns/persistence" xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1">
    <dep:environment>
        <dep:moduleId>
            <dep:groupId>DataStar</dep:groupId>
            <dep:artifactId>DataStar</dep:artifactId>
            <dep:version>1.0</dep:version>
            <dep:type>car</dep:type>
        </dep:moduleId>

<!--Don't load commons-io or fileupload from parent classloaders-->
        <dep:hidden-classes>
            <dep:filter>org.apache.commons.io</dep:filter>
            <dep:filter>org.apache.commons.fileupload</dep:filter>
        </dep:hidden-classes>
        <dep:inverse-classloading/>        


    </dep:environment>
    <web:context-root>/DataStar</web:context-root>
</web:web-app>

6
2017-09-10 15:15



Voici un exemple utilisant apache commons-fileupload:

// apache commons-fileupload to handle file upload
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(DataSources.TORRENTS_DIR()));
ServletFileUpload fileUpload = new ServletFileUpload(factory);

List<FileItem> items = fileUpload.parseRequest(req.raw());
FileItem item = items.stream()
  .filter(e ->
  "the_upload_name".equals(e.getFieldName()))
  .findFirst().get();
String fileName = item.getName();

item.write(new File(dir, fileName));
log.info(fileName);

0
2018-05-21 16:49



vous pouvez télécharger le fichier en utilisant jsp / servlet.

<form action="UploadFileServlet" method="post">
  <input type="text" name="description" />
  <input type="file" name="file" />
  <input type="submit" />
</form>

d'un autre côté côté serveur. utilisez le code suivant.

     package com.abc..servlet;

import java.io.File;
---------
--------


/**
 * Servlet implementation class UploadFileServlet
 */
public class UploadFileServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public UploadFileServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.sendRedirect("../jsp/ErrorPage.jsp");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

            PrintWriter out = response.getWriter();
            HttpSession httpSession = request.getSession();
            String filePathUpload = (String) httpSession.getAttribute("path")!=null ? httpSession.getAttribute("path").toString() : "" ;

            String path1 =  filePathUpload;
            String filename = null;
            File path = null;
            FileItem item=null;


            boolean isMultipart = ServletFileUpload.isMultipartContent(request);

            if (isMultipart) {
                FileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload upload = new ServletFileUpload(factory);
                String FieldName = "";
                try {
                    List items = upload.parseRequest(request);
                    Iterator iterator = items.iterator();
                    while (iterator.hasNext()) {
                         item = (FileItem) iterator.next();

                            if (fieldname.equals("description")) {
                                description = item.getString();
                            }
                        }
                        if (!item.isFormField()) {
                            filename = item.getName();
                            path = new File(path1 + File.separator);
                            if (!path.exists()) {
                                boolean status = path.mkdirs();
                            }
                            /* START OF CODE FRO PRIVILEDGE*/

                            File uploadedFile = new File(path + Filename);  // for copy file
                            item.write(uploadedFile);
                            }
                        } else {
                            f1 = item.getName();
                        }

                    } // END OF WHILE 
                    response.sendRedirect("welcome.jsp");
                } catch (FileUploadException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                } 
            }   
    }

}

-1
2018-02-04 10:00