Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120

    [Java EE] Ajax e fileuploader

    Ciao, ho un problema con un progetto.
    Devo prendere dei dati in input da salvare su db da un form html fra cui un immagine.
    Il nome dell'immagine deve essere salvato su db mentre il file vero e proprio in una cartella del server.
    Sto cercando di usare ajax per salvare l'immagine prima di spedire tutti i dati su db ma qualcosa non funziona nella servlet CaricaGioco, quella che dovrebbe salvare il file su disco .
    Quando esegue List<FileItem> items = upload.parseRequest(request) esce dalla servlet senza lanciare eccezzioni o errori.

    Un dubbio: L'immagine mandata alla servlet con ajax è di tipo multipart anche se non la invio con il submit?

    Sono alle prime armi con ajax quindi ogni aiuto è apprezzato :-)
    Grazie in anticipo.

    Ecco il codice:
    Html:
    codice:
    <form action="Dispatcher?cmd=salvaGioco" enctype="multipart/form-data" method="POST">
             <div id="Left">
                        // qui ho una serie di combobox e input text
    	            
    
     Immagine: </p>	
                        <input id="inputImmagine" type="file" name="file"/>
    
                        <input onclick="caricaImmagine();" type="button" value="Carica" />
                        <input id="salva" type="submit" value="Salva Gioco"/>
              </div>
    </form>
    Javascript:
    codice:
    var request; 
    
    function initRequest() {
         //creo l'XMLHTTPRequest
    }
    
    function caricaImmagine(){
        
        request = initRequest();
        var fileElement = document.getElementById("inputImmagine");
        var file = fileElement.files[0].value;
        var formData = new FormData();
        formData.append("file", file);
        var url = "CaricaImmagine";
        request.open( "POST", url  );
        request.onreadystatechange = callback;
        request.send( formData );    
    }
    
    function callback(){
        if (request.readyState == 4) {
            if (request.status == 200) {
                parseMessages(request.responseXML);
            }
        }
    }
    
    function parseMessages(responseXML){
        //uso i dati restituiti
        }
    }
    Java:
    codice:
    @WebServlet(name = "CaricaImmagine", urlPatterns = {"/CaricaImmagine"})
    public class CaricaImmagine extends HttpServlet {
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
    
            int dimensioneMaxInByte = 10 * 1024 * 1024; // 10 MiB
            try {
                DiskFileItemFactory factory = new DiskFileItemFactory();
                factory.setSizeThreshold(dimensioneMaxInByte);
                ServletFileUpload upload = new ServletFileUpload(factory);
               
                List<FileItem> items = upload.parseRequest(request); //<----- qui il problema
    
                // qui lavoro sul mio file 
    
            } catch (Exception ex) {
                Logger.getLogger(CaricaGioco.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non vorrei dirti una baggianata, ma non credo che, per quanto potente, ajax da solo possa trattare upload. Ovvero, ho visto diversi che fanno upload "in background" che si appoggiano a componenti flash e/o html5 proprio per ovviare a questa limitazione. Prova a fare una ricerca per ajax uploader o similari.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Ho gia cercato in rete, ci sono molti esempi che usano jquery ma preferirei usare solo puro javascript; ho ancora qualche difficoltà con js e non voglio passare a jq senza conoscere discretamente il primo.
    Se non si puo fare come sto cercando di fare io troverò un altro modo per ottenere un risultato simile.
    Comunque grazie lo stesso

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non è che devi per forza usare jquery (che per la cronaca, è javascript). C'è roba che va senza jquery o altri frameworks. Il punto è che con solo javascript non si fa. E nella maggior parte dei casi, non vale la pena reinventare la ruota. Poi ognuno è padrone del proprio tempo.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Forse mi sono espresso male, non voglio impuntami solo su javascript ma purtroppo il progetto su cui sto lavorando è per l'esame di diploma e non ho molto tempo.
    Gli esempi che ho trovato in rete o non si adattano al mio progetto o usano jquery. Mi sarebbe piaciuto riuscire fare l'upload in background con quello che conosco gia; dato che non è possibile ho usato un modo meno elegante ma che funziona, almeno posso andare avanti. Se mi rimarrà tempo prima dell'esame tornerò sul problema e cercherò di studiare quello che mi manca.
    Ancora grazie

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.