Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Faggin
    Registrato dal
    May 2008
    Messaggi
    65

    Caricare servletda javascript nella stessa pagina

    Come da oggetto

    Ho un problema.

    Devo caricare una Servlet da un javascript (Ajax) e voglio che la pagina rimanga la stessa

    Il form di riferimento Html è il seguente

    Codice PHP:
    <FORM ENCTYPE="multipart/form-data" ACTION="../UploadFile" METHOD=POST ">                              
    <label>Name:</label>
    <INPUT NAME="
    documentationNameInput" TYPE="text">

     
    <label>File:</label> 
    <INPUT NAME="
    documentationUrlInput" TYPE="file">

                                          
    <INPUT  TYPE="
    submit" VALUE="Send File" onclick="addDocumentation();">                          
    </FORM> 

  2. #2
    no, aspetta, l'upload di un file non si può fare con AJAX. Devi usare un iFrame o appoggiarti ad uno strumento diverso (tipo flash).

    questo è un esempio di Upload Asincrono di File con Flash e JS:

    http://digitarald.de/project/fancyup...se/photoqueue/
    I DON'T Double Click!

  3. #3
    Utente di HTML.it L'avatar di Faggin
    Registrato dal
    May 2008
    Messaggi
    65
    Infatti il compito di uploadare il file spetta alla servlet.
    Però mi interessa passare i parametri anche al javascript e nn avere ricaricata una nuova pagina, ma lasciare la stessa stampando in una tabella i parametri del file (nome, url)

  4. #4
    No, mi sa che non funziona così... Per fare l'upload DEVI spostare il browser su di un altra pagina, quella della servlet, dato che devi fare una richiesta per un determinato file (nel tuo caso ../UploadFile) con un determinato method (POST) alla quale richiesta includi degli header particolari (enctype: multipart/form-data) passandogli poi in post le variabili che sono composte non solo da testo ma anche da un file vero e proprio, sotto il nome di documentationUrlInput.

    Tutto questo si compone comunque di una richiesta ed il browser, dopo aver inviato i dati, si mette in attesa della risposta (la nuova pagina).

    Proprio per questo ti dicevo di usare un iFrame, in questo modo c'è il refresh SOLO dell'iFrame, mentre il resto della pagina rimane fissa.
    I DON'T Double Click!

  5. #5
    Utente di HTML.it L'avatar di Faggin
    Registrato dal
    May 2008
    Messaggi
    65
    Ho visto l'esempio

    http://digitarald.de/project/fancyup...se/photoqueue/

    ed usa Php, cosa che io non posso fare.

    Io uso Html, Javascript, Ajax e Servlet Java.

    C'è qualcosa che mi può aiutare con queste tecnologie?

  6. #6
    guarda che rispetto a quell'esempio l'unica cosa che cambia è la action verso la quale mandare il file che, a differenza di un file .php, è una servlet, quindi puoi tranquillamente usare FancyUpload
    I DON'T Double Click!

  7. #7
    Utente di HTML.it L'avatar di Faggin
    Registrato dal
    May 2008
    Messaggi
    65
    Grazie !
    credo di aver risolto proprio con l' iframe.

    Codice dell'iframe

    codice:
    <html>
    <head>
    
    <script language="JavaScript" type="text/javascript" src="../js/private/ajax.js"></script>
    <script language="JavaScript" type="text/javascript" src="../js/private/jsclasses.js"></script>
    </head>
    <body>
    	<FORM METHOD="POST" id="caricaa" name="caricaa" ENCTYPE="multipart/form-data" ACTION="../UploadFile" >
    
    		
    		<INPUT NAME="nascosto" TYPE="hidden" >
    			
    		<label>Name:</label>
    		<INPUT NAME="documentationNameInput" TYPE="text">
    
    
    													
    		<label>File:</label> 
    		<INPUT NAME="documentationFileInput" TYPE="file" >
    
    
    							
    		<INPUT  TYPE="submit" VALUE="Send File" onclick="addDocumentation();">
    				
    	</FORM>
    		
    </body>
    </html>

    Codice servlet


    come si evince basta fare l'output con il codice dell'iframe, dalla servlet



    codice:
    import java.io.File;
    import java.io.IOException;
    import java.io.Writer;
    import java.net.URLDecoder;
    import java.util.Iterator;
    import java.util.List;
    
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileItemFactory;
    //import org.apache.commons.fileupload.FileUpload;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    
    
    
    
    
    /**
     * Class for storing the uploaded files.
     * 
     * @author JavaAtWork
     */
    public class UploadFile extends HttpServlet {
    
      /**
        * The base upload directory. In this directory all uploaded files will
        * be stored. With the applet param tag 'directory' you can create a
        * subdirectory for a user. 
        * See http://www.javaatwork.com/parameters.html#directory for more 
        * information about the 'directory' param tag. For a Windows environment 
        * the BASE_DIRECTORY can be e.g. * 'c:/temp' for Linux environment '/tmp'.
        */
      
       
      
    
      protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
    	  
    
    	  
    	  
    	  ServletContext context = this.getServletConfig().getServletContext();
    
    	  String BASE_DIRECTORY=context.getRealPath("/upload");
    	  
    
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    
        // check if the http request is a multipart request
        // with other words check that the http request can have uploaded files
        if (isMultipart) {
    
          //  Create a factory for disk-based file items
          FileItemFactory factory = new DiskFileItemFactory();
    
          //  Create a new file upload handler
          ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
    
          // Set upload parameters
          // See Apache Commons FileUpload for more information
          // http://jakarta.apache.org/commons/fileupload/using.html
          servletFileUpload.setSizeMax(-1);
    
          try {
    
            String directory = "";
    
            String dirNascosta = "";
            
            // Parse the request
            List items = servletFileUpload.parseRequest(request);
    
            // Process the uploaded items
            Iterator iter = items.iterator();
    
            while (iter.hasNext()) {
              FileItem item = (FileItem) iter.next();
    
              // the param tag directory is sent as a request parameter to
              // the server
              // check if the upload directory is available
              if (item.isFormField()) {
    
                String name = item.getFieldName();
                
                //leggo il file nascosto per l'invio del nome con data modificato da javascript
                if (name.equalsIgnoreCase("nascosto")) {
                	
                	dirNascosta = item.getString();           	
                }	
                	           
                if (name.equalsIgnoreCase("documentationFileInput")) {
    
                  directory = item.getString();
                }
    
                // retrieve the files
              } else {
            	  
            	  
    
                // the fileNames are urlencoded
                String fileName = URLDecoder.decode(item.getName(), "UTF-8");
                
                
                fileName=dirNascosta;
                
                //System.out.println("fileNameNEW------>"+fileName);
                //System.out.println("nascosto2q------>"+dirNascosta);
                
                //System.out.println("directory------>"+directory);
                File file = new File(directory, fileName);
                file = new File(BASE_DIRECTORY, file.getPath());
                //System.out.println("file------>"+file);
    
                // retrieve the parent file for creating the directories
                File parentFile = file.getParentFile();
    
                if (parentFile != null) {
                  parentFile.mkdirs();
                }
    
                // writes the file to the filesystem
                item.write(file);
                System.out.println("Server path:" +file.getPath());            
              }
            }
    
          } catch (Exception e) {
            e.printStackTrace();
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
          }
    
          response.setStatus(HttpServletResponse.SC_OK);
          Writer writer=response.getWriter();
          
          //metto il codice HTML per far rigenerare la stessa pagina
          String text="<FORM METHOD=\"POST\" id=\"caricaa\" name=\"caricaa\" ENCTYPE=\"multipart/form-data\" ACTION=\"UploadFile\"  ><INPUT NAME=\"nascosto\" TYPE=\"hidden\" ><label>Name:</label><INPUT NAME=\"documentationNameInput\" TYPE=\"text\">
    
    <label>File:</label> <INPUT NAME=\"documentationFileInput\" TYPE=\"file\" >
    
    <INPUT  TYPE=\"submit\" VALUE=\"Send File\" onclick=\"addDocumentation();\"></FORM></body></html>";           
          writer.write("<html><head><script language=\"JavaScript\" type=\"text/javascript\" src=\"js/private/ajax.js\"></script><script language=\"JavaScript\" type=\"text/javascript\" src=\"js/private/jsclasses.js\"></script></head><body><div>File uploaded</div>"+text);
          
                
          writer.close();
    
        } else {
          response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        }
      }
      
    }

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.