Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Upload File

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    32

    Upload File

    Salve,
    ho realizzato una pagina JSP che mi permette utilizzando le librerie
    org.apache.commons.fileupload.*;
    di fare l'upload di un file sul server che ospita la pagina web.

    Fin qui tutto ok.

    Sulla stessa pagina però devo andare a selezionare ( e poi leggere ) anche altri parametri, normalmente utilizzo il metodo "request.getParameter("nome del campo della mia pagina jsp"), e di norma funziona, ma utilizzando la codifica ENCTYPE='multipart/form-data', che è necessaria per l'upload del file, il metodo .getParameter mi restituisce un valore a "null".

    Come posso fare per utilizzare l'upload mantenendo la possibilità di leggere anche il valore degli altri campi presenti all'interno della jsp?????

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

    Re: Upload File

    Originariamente inviato da marcomo
    Come posso fare per utilizzare l'upload mantenendo la possibilità di leggere anche il valore degli altri campi presenti all'interno della jsp?????
    Stando al javadoc, un FileItem può anche essere un semplice campo di un form (non un "file"). Quindi ti basta cercare i FileItem dei campi semplici che ti interessano.
    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
    Jul 2008
    Messaggi
    32
    Grazie per la risposta.

    Allora ho controllato, lui si mi crea un "Item" per ogni campo che è presente all'interno della pagina JSP, sia esso un campo testo o un file da "uplodare", però ad esempio io ho un campo che si chiama txtestratto, dove vado a inserire la descrizione del file che stò uplodando.

    All'interno della mia LIst di Items io vedo il nome campo txtestratto, ma non vedo la descrizione che gli ho inserito.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ho fatto una piccola prova con FileUpload di Jakarta Commons, non si sa mai mi ci trovassi a lavorare in futuro, prendendo paro paro il codice che c'è alla home page del progetto:
    Una pagina con il form

    codice:
    index.jsp
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page - Upload Form</title>
        </head>
        <body>
            <form name="uploadform" method="post" enctype="multipart/form-data" action="upload.jsp">
                File: <input type="file" name="upload_file" />
    
                <label>Un campo di testo</label><input type="textfield" name="text_field" />
    
                <input type="submit" value="submit" />
            </form>
        </body>
    </html>
    e una landing page con la logica server-side, ricalcata in pieno dal sito
    codice:
    upload.jsp
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@page import="org.apache.commons.fileupload.*,org.apache.commons.fileupload.servlet.*,org.apache.commons.fileupload.disk.*;" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page - Landing Page Upload Form</title>
        </head>
        <body>
            <h1>Fields</h1>
            <%!
              public String processFormField(FileItem item) {
                  String name = item.getFieldName();
                  String value = item.getString();
                  return (name+" "+value);
    
              }
    
              public String processUploadedFile(FileItem item) {
                  String fieldName = item.getFieldName();
                  String fileName = item.getName();
                  String contentType = item.getContentType();
                  boolean isInMemory = item.isInMemory();
                  long sizeInBytes = item.getSize();
                  String tot_info = "Field name: "+fieldName + "
    " +
                          "File name: "+fileName+ "
    " +
                          "Content type: " + contentType + "
    " +
                          "Is in memory: " + isInMemory + "
    " +
                          "Size (bytes): " + sizeInBytes;
                  return tot_info;
              }
            %>
            <%
              boolean isMultiPart = ServletFileUpload.isMultipartContent(request);
              if (isMultiPart) {
                  // Create a factory for disk-based file items
                  DiskFileItemFactory factory = new DiskFileItemFactory();
    
                  // Set factory constraints
                  //factory.setSizeThreshold(yourMaxMemorySize);
                  //factory.setRepository(yourTempDirectory);
    
                  // Create a new file upload handler
                  ServletFileUpload upload = new ServletFileUpload(factory);
    
                  // Set overall request size constraint
                  //upload.setSizeMax(yourMaxRequestSize);
    
                  // Parse the request
                  java.util.List items = upload.parseRequest(request);
    
                  // Process the uploaded items
                  java.util.Iterator iter = items.iterator();
                  while (iter.hasNext()) {
                         FileItem item = (FileItem) iter.next();
                         if (item.isFormField()) {
                                    out.println(processFormField(item)+"
    ");
                         }
                         else {
                             out.println(processUploadedFile(item));
                         }
                  }
              }          
            %>
        </body>
    </html>
    i due metodi dello scriplet come vedi non fanno niente di interessante, visto che era solo per provare, però come vedi i dati passano tutti.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    32
    Quindi riesci a vedere correttamente quello che c'è scritto dentro il tuo campo "textfield"?????

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    affermativo. ti bastava solo copiare le due pagine per fare una prova.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.