Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63

    Strano problema sul recupero dei dati su una servlet

    ho questa form

    Codice PHP:
    <form action="AggiungiFile" method="post" >
                
    Uppatoda: <input type="text" name="user" size="30">
                <
    input type="file" name="fileUpload"/>
                
    solo file tipo .xls
                
    <input type="submit" value="Invia"/>
                
            </
    form
    Nella servlet AggiungiFile recupero l' userì
    Codice PHP:
    String user request.getParameter("user"); 
    provo a stampare l'user
    Codice PHP:
    out.println(user
    e come risultato mi stampa un bel null

    Se nella form, levo il enctype="multipart/form-data" mi stampa l'user ma non mi salva il file.

    Come risolvere?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Strano problema sul recupero dei dati su una servlet

    Originariamente inviato da mauc
    Codice PHP:
    <form action="AggiungiFile" method="post" >
                
    Uppatoda: <input type="text" name="user" size="30">
                <
    input type="file" name="fileUpload"/>
                
    solo file tipo .xls
                
    <input type="submit" value="Invia"/>
                
            </
    form
    Nella servlet AggiungiFile recupero l' userì
    Codice PHP:
    String user request.getParameter("user"); 
    No se c'è un type="file" e lo gestisci con la libreria Apache FileUpload, allora devi gestire anche i campi normali attraverso la iterazione e verifica (stavolta che sia un "form field", cioè isFormField() ritorni true) che già ben conosci e di cui hai (abbiamo) parlato nell'altra discussione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63

    Re: Re: Strano problema sul recupero dei dati su una servlet

    Originariamente inviato da andbin
    No se c'è un type="file" e lo gestisci con la libreria Apache FileUpload, allora devi gestire anche i campi normali attraverso la iterazione e verifica (stavolta che sia un "form field", cioè isFormField() ritorni true) che già ben conosci e di cui hai (abbiamo) parlato nell'altra discussione.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63
    scrivo per riuppare la discussione. Non riesco a iterare per ottenere il nome

    Codice PHP:
    ................

    "<form action=\"AggiungiFile\" method=\"post\"  enctype=\"multipart/form-data\"  >"
                        
    "<fieldset>"
                        
    "<legend>Document information</legend>"
                        
    "<input type=hidden name=user value='"+user+"'>"
                        
    "<div> <label>Document:</label><input type=file name=fileUpload> </div>"
                        
    "<input type=submit value=Add></input>"
                        
    "</fieldset>"
                        
    "</form>"
    .................... 
    il file lo ricavo cosi

    Codice PHP:
    while(itr.hasNext()) {
                        
    FileItem item = (FileItemitr.next();  
                        
                        if(!
    item.isFormField()) {                        
                            
    File fullFile  = new File(item.getName()); 
                            
    File savedFile = new File(getServletContext().getRealPath("/"), fullFile.getName());
    ..... 
    Come devo fare per recuperare il type=hidden ??

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mauc
    Come devo fare per recuperare il type=hidden ??
    Verifica il name del FileItem con getFieldName(). Se poi vuoi fare il controllo più pignolo, verifica anche che isFormField() sia true.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63
    codice:
    + "<form action=\"pAddDoc\" method=\"post\"  enctype=\"multipart/form-data\"  >"
                        + "<fieldset>"
                        + "<legend>Document information</legend>"
                        + "<input type=hidden name=user value='"+user+"'>"
                        + "<div> <label>Document:</label><input type=file name=fileUpload> </div>"
                        + "<input type=submit value=Add></input>"
                        + "</fieldset>"
                        + "</form>"

    codice:
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
            if(isMultipart){
                try {        
                    String nuovo = "no";
                    String tipo = "xlsx";
                    Class.forName("com.mysql.jdbc.Driver");
                    String connectionUrl = "jdbc:mysql://localhost/prog?" + "user=root&password=";
                    con = DriverManager.getConnection(connectionUrl);
                    Statement stmt = con.createStatement();
                    
                    DiskFileItemFactory factory = new DiskFileItemFactory();
                    ServletFileUpload upload = new ServletFileUpload(factory);
                    List items = upload.parseRequest(request);
                    Iterator itr = items.iterator();
                    
                    while(itr.hasNext()) {
                        FileItem item = (FileItem) itr.next();  
                        
                        if(!item.isFormField()) {                        
                            File fullFile  = new File(item.getName()); 
                            File savedFile = new File(getServletContext().getRealPath("/"), fullFile.getName());
                            
                            //out.println(savedFile.exists());  true è presente, false non c'è
                            if (item.getName().contains(tipo)){
                                    out.println("<tr>"
                                        + "<td style=background-color:#eeeeee>"
                                        + "il file deve essere di formato .xls"
                                        + "</td>"
                                        + "</tr>");//terza riga
                                }
                            else
                                if (savedFile.exists()){
                                    out.println("<tr>"
                                            + "<td style=background-color:#eeeeee>"
                                            + "Already exists a file with this name. Move back to upload a file with differet name."
                                            + "</td>"
                                            + "</tr>");//terza riga
                                }
                                else {
                                    item.write(savedFile);
                                    stmt.executeUpdate("INSERT INTO listafile (UppatoDa,NomeFile,Stato) VALUES ('"+user+"','"+item.getName()+"','"+nuovo+"' ) ");
                                    out.println("<tr>"
                                            + "<td style=background-color:#eeeeee>"
                                            + "File saved."
                                            + "</td>"
                                            + "</tr>");//terza riga
                                }
                        } 
                    }//fine while
                }catch (Exception e) {
                    out.println("errore: "+e.getMessage());
                }
            }//fine multipart
    questo è il codice. Il primo per l'upload e il secondo per il salvataggio del file uppato. Dove devo andare a inserire il controllo isFormField? Non mi è molto chiaro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63
    io faccio

    codice:
                                    
    String a = item.getFieldName();
    quando poi vado a fare out.println(a);

    ottengo fileUpload, dove sbaglio?!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.