2016-07-02 13 views
0

Ich habe versteckten Eingabetyp, wo ich ausgewählt idWie GetParameter für versteckte Eingabe in Mulitpart in Servlet anfordern?

JSP Datei gespeichert hatte

<form method="post" enctype="multipart/form-data" action="./PropertyImage"> 
    <input type="hidden" name="property_id" value="<%=bean.getproperty_id%>"/> 
</form> 

jetzt in Servlet hatte ich Typen diesen versteckten Eingang für den Zugriff auf

Sevlet

FileItemFactory factory = new DiskFileItemFactory(); 

    // Create a new file upload handler 
    ServletFileUpload upload = new ServletFileUpload(factory); 
    // upload.setSizeMax(yourMaxRequestSize); 

    // Parse the request 
    List<FileItem> uploadItems; 

try 
    { 
     uploadItems = upload.parseRequest(request); 

     Dictionary dict = new Hashtable(); 

     for(FileItem uploadItem : uploadItems) 
     { 
      if(uploadItem.isFormField()) 
      { 
       String fname = ""; 
       String fieldName = uploadItem.getFieldName(); 
       String value = uploadItem.getString(); 

      dict.put(fieldName, value); 
      }  
      System.out.println("Property id == "+dict.get("property_id")); 

     final String UPLOAD_DIRECTORY="E:/parag/project/New folder/sam/WebContent/images/agentimg"; 

     String image_name=""; 
     String imagepath=""; 

     if(ServletFileUpload.isMultipartContent(request)) 
     { 
      try 
      { 
       for(FileItem item : uploadItems) 
       { 
        if(!item.isFormField()) 
        { 
         //get the value for select images to upload . 
         image_name = new File(item.getName()).getName(); 

         System.out.println("image name == "+image_name); 
         String imagename=new Date().getTime()+image_name; 
         item.write(new File(UPLOAD_DIRECTORY + File.separator +imagename)); 
         request.setAttribute("image", UPLOAD_DIRECTORY + File.separator + image_name); 

         //create images path to forward database. 
         imagepath="images/agentsimg/"+imagename; 

         System.out.println("path == "+imagepath); 
        } 
       } 

      } 
      catch (Exception e) 
      { 
       // TODO: handle exception 
       e.printStackTrace(); 
      } 

      PropertyBean bean = new PropertyBean(); 

//    bean.setProperty_id(property_id); 
      bean.setProperty_image(imagepath); 

      int status = PropertyModel.propertyImage(bean); 

      if(status>0) 
      { 
       String message = "Image added to database"; 
       request.setAttribute("message", message); 
       request.getRequestDispatcher("/properties.jsp").forward(request, response); 
      } 
      else 
      { 
       String message1 = "Image not added to database"; 
       request.setAttribute("message1", message1); 
       request.getRequestDispatcher("/properties.jsp").forward(request, response); 
      } 

     } 
     else 
     { 
      String message2 = "Image upload to database"; 
      request.setAttribute("message2", message2); 
      request.getRequestDispatcher("/agents.jsp").forward(request, response); 
     } 

    } 
    catch (Exception e) 
    { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 

aber der Ausgang ist

Property-ID == null

bitte helfen Sie mir dieses

wie Anfrageparameter verborgenen Eingabetypen während mehrt bekommen ???

Antwort

0

Erstens, was auch immer Sie tun, ist völlig falsch ...

Wenn Sie Ihre Formularfelder mit verschlüsseln multipart/form-data dann müssen Sie Ihre Anfrage analysieren sollte auf der Servlet-Seite entschlüsselt werden.

Dafür müssen Sie zuerst common-io-version.jar und commons-fileupload-version.jar

dann in Ihnen Servlet knapp unterhalb setzen Code und Sie werden mit ihm ....

if(ServletFileUpload.isMultipartContent(request)) 
    { 

     try 
     { 
      List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 

      for (FileItem item : multiparts) 
      { 
       //check if the item that we get is a file or just a form data 
       //go in if condition if file found else goto else for form data 
       if (!item.isFormField()) 
       { 
        //gets the file name from request 
        String name = item.getName(); 

        // At the place of UPLOAD_DIRECTORY you can replace your path to the folder where you want to save your image 
        File userdir = new File(UPLOAD_DIRECTORY); 

        //create user directory if not exists 
        if (!userdir.exists()) 
        { 
         userdir.mkdir(); 
        } 
        boolean exist=true; 

        String photoURL=UPLOAD_DIRECTORY + File.separator + name; 
        File photo=new File(photoURL); 
        item.write(photo); 
        System.out.println("Photo Number"+number); 

       } 
       else 
       { 
        // Here you will get each and every field that you defined within your form tag 
        String fieldname = item.getFieldName(); 
        String fieldvalue = item.getString(); 
        System.out.println(fieldname + " : " + fieldvalue); 
       } 
      } 

     } 
     catch (Exception ex) 
     { 
      request.setAttribute("message", "File Upload Failed due to " + ex); 
      ex.printStackTrace(); 
     } 

    } 
    else 
    { 
     request.setAttribute("message", "Sorry this Servlet only handles file upload request"); 
    } 

in JSP nur setzen getan werden Code unter

<form action="uploadtodb" method="post" enctype="multipart/form-data"> 
     User Name: 
     <input type="text" name="userName" id="userName" placeholder="123"> 
     <br> 
     <input type="hidden" name="property_id" value="<%=bean.getproperty_id%>"/> 
     <input type="file" name="file" accept="image/*"> 
     <br> 
     <input type="submit" value="upload"> 
    </form> 

wenn Sie nicht wollen, eine beliebige Datei der Put-Code wie unten

Servlet

if(ServletFileUpload.isMultipartContent(request)) 
{ 

    try 
    { 
     List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 

     for (FileItem item : multiparts) 
     { 

      if (item.isFormField()) 
      { 
       // Here you will get each and every field that you defined within your form tag 
       String fieldname = item.getFieldName(); 
       String fieldvalue = item.getString(); 
       System.out.println(fieldname + " : " + fieldvalue); 
      } 
     } 

    } 
    catch (Exception ex) 
    { 
     request.setAttribute("message", "File Upload Failed due to " + ex); 
     ex.printStackTrace(); 
    } 

} 
else 
{ 
    request.setAttribute("message", "Unable to parse your request..."); 
} 

hochladen und nur Input-Tag mit type="file" von JSP Datei entfernen und Sie mit ihm getan.

Was Sie tun, ist für nicht-mehrt Wunsch können Sie nicht tun, mit mehrteiliger Anfrage, da es verschlüsselt ist ...

+0

Hey ich habe meinen Code bearbeitet es PLZ-Überprüfung jetzt hatte ich vollständigen Code der Steuerung gegeben PLZ überprüfen und helfen ... –

Verwandte Themen