Question

J'ai un formulaire de téléchargement de fichier qui est envoyé sur un servlet (en utilisant l'encodage multipart / form-data). Dans le servlet, j'essaie d'utiliser Apache Commons pour gérer le téléchargement. Cependant, il existe également d'autres champs dans le formulaire qui ne sont que des champs ordinaires. Comment puis-je lire ces paramètres à partir de la demande?

Par exemple, dans mon servlet, j'ai un code comme celui-ci à lire dans le fichier téléchargé:

    // Create a factory for disk-based file items
    FileItemFactory factory = new DiskFileItemFactory();
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // Parse the request
    Iterator /* FileItem */ items = upload.parseRequest(request).iterator();
    while (items.hasNext()) {
        FileItem thisItem = (FileItem) items.next();
        ... do stuff ...
    }
Était-ce utile?

La solution

Vous pouvez essayer quelque chose comme ceci:

while (items.hasNext()) {
        FileItem thisItem = (FileItem) items.next();
        if (thisItem.isFormField()) {
            if (thisItem.getFieldName().equals("somefieldname") {
                String value = thisItem.getString();
                // Do something with the value
            }
        }

    }

Autres conseils

Il m’a fallu quelques jours pour comprendre cela, mais le voici et ça marche, vous pouvez lire des données en plusieurs parties, des fichiers et des paramètres, voici le code:

    try {

        ServletFileUpload upload = new ServletFileUpload();
        FileItemIterator iterator = upload.getItemIterator(req);
        while(iterator.hasNext()){


            FileItemStream item = iterator.next();
            InputStream stream = item.openStream();
            if(item.isFormField()){
                if(item.getFieldName().equals("vFormName")){

                    byte[] str = new byte[stream.available()];
                    stream.read(str);
                    full = new String(str,"UTF8");
                }
            }else{
                byte[] data = new byte[stream.available()];
                stream.read(data);
                base64 = Base64Utils.toBase64(data);
            }
        }

    } catch (FileUploadException e) {

        e.printStackTrace();
    }

Avez-vous déjà essayé request.getParam ()?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top