Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Salvare immagini su mysql

    Ciao a tutti ho una pagina di un sito web con un form che permette agli utenti di caricare delle foto dal prorio server locale tramite un campo di <input type="file"/>. Le immagini che selezionano devono essere caricate in una tabella di Mysql per poterle poi ogni volta riprendere e inserire in una pag html!!!
    Guardando in giro mi pare di aver capito che dovrei utilizzare un campo di tipo blob nella tabella dove salvare i dati dell'immagine, però tutti gli es che ho visto utilizzano php.. Si può fare la stessa cosa con ajax?
    Per adesso ho scritto:
    codice:
    <html>     
    <head>         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">         <title>JSP Page</title>         
    <script type="text/javascript" src="js/jquery-ui-1.8.17.custom.min.js"></script>     </head>    
     <body>         
    <input type="file" id="files" name="files[]" multiple />         
    <output id="list"></output>         
    <p id="p"></p>     
    </body> 
    </html> 
    
    <style>  
     .thumb {    
     height: 75px;     
    border: 1px solid #000;    
     margin: 10px 5px 0 0;   } 
    </style> 
    
    <script>  
    function handleFileSelect(evt) {      
    var files = evt.target.files; // FileList object        
     // Loop through the FileList and render image files as thumbnails.    
     for (var i = 0, f; f = files[i]; i++) {       
     // Only process image files.       if (!f.type.match('image.*')) { 
            continue;       }      
     var reader = new FileReader();       // Closure to capture the file information.       reader.onload = (function(theFile) {        
     return function(e) {           // Render thumbnail.          
     var span = document.createElement('span');                     
    span.innerHTML = ['<img class="thumb" src="', e.target.result,  
     '" title="', escape(theFile.name), '"/>'].join('');           document.getElementById('list').insertBefore(span, null);        
     };     
      })(f);      
     // Read in the image file as a data URL.      
     reader.readAsDataURL(f);     }   }     document.getElementById('files').addEventListener('change', handleFileSelect, false); </script>
    Come faccio ad ottenere i dati della mia immagine da salvare su my sql?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: Salvare immagini su mysql

    Originariamente inviato da jennFer89
    ... però tutti gli es che ho visto utilizzano php.. Si può fare la stessa cosa con ajax?
    No sono due cose completamente diversa il primo è un linguaggio server il secondo è un metodo d'invio dati in background
    Come faccio ad ottenere i dati della mia immagine da salvare su my sql?
    Per quanto ne so non è possibile ajax e javascript invia stringhe non dati binari
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    con ajax puoi inviare via get o post a pagina php ma secondo me no...

  4. #4
    A parte che salvare "dati" ossia immagini sul DB è una blasfemia (almeno nel tuo caso)... via JavaScript è certamente possibile inviare dati binari ma non mi sembra il caso.

    Potresti provare con JSON ma rivedi il tutto ed usa PHP, salvando l'immagine sul Server.
    CrystalSoft | Software House & Web Agency di WinRefine, Mercante in Fiera e altro...
    Annunci Zoo | Annunci gratuiti per il mondo degli Animali
    ElettroMercatino | Annunci a tema Informatico ed Elettronico

  5. #5

    Re: Salvare immagini su mysql

    Originariamente inviato da jennFer89

    Come faccio ad ottenere i dati della mia immagine da salvare su my sql?
    Nel db salva solo il nome dell'immagine ed il percorso.
    Un linguaggio lato-server è comunque necessario, qui trovi un esempio di implementazione oppure puoi provare ad usare uploadify

  6. #6
    alla fine ho trovato un altro modo, usando la classe FileUpload però ho un problema nella cancellazione dei file temp

    codice:
    public class TestServlet extends HttpServlet {
    
    	private static final long serialVersionUID = 1L;
            private Percorsi p=new Percorsi();
            private int iddomanda;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    		doPost(request, response);
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
    
                    response.setContentType("text/html");
                    String attributo = (String)request.getSession().getAttribute("iddomanda");
                    iddomanda=Integer.parseInt(attributo);
    		boolean isMultipartContent = ServletFileUpload.isMultipartContent(request);
    		
    		FileItemFactory factory = new DiskFileItemFactory();
    		ServletFileUpload upload = new ServletFileUpload(factory);
    		try {
    			List<FileItem> fields = upload.parseRequest(request);
    			Iterator<FileItem> it = fields.iterator();
    			if (!it.hasNext()) {
    				return;
    			}
    
    			while (it.hasNext()) {
    				FileItem fileItem = it.next();
    
    
    				boolean isFormField = fileItem.isFormField();
    				if (isFormField) {
    				} else {
    
    
                            byte b[]=fileItem.get();
                            ServletContext ctx = getServletContext();
    
                            String path=ctx.getRealPath("/Immagini") ;
                            File f=new File(path);
                            File file=f.createTempFile("imm",".jpeg",f);
    
                            try {
                                 fileItem.write(file);
                                 String percorso="Immagini/"+file.getName();
                                 p.percorsi(percorso);
    
    
                            } catch (Exception ex) {
                                 Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
                            }
                           file.deleteOnExit();
    
                                }
                        }
    		} catch (FileUploadException e) {
    			e.printStackTrace();
    		}
    
                   RequestDispatcher dispatcher;
    
                   request.setAttribute("fileName", p);
                   request.setAttribute("iddomanda", iddomanda);
                   dispatcher = getServletContext().getRequestDispatcher("/doUpload.jsp");
            try {
                //dispatcher.
                dispatcher.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
    	}
    In questo modo creo una copia in una mia cartella dell'immagine inserita.Però dopo questo vorrei cancellasse il file temp. Ho notato che dopo un po si autocancellano ma se volessi cancellarli subito? se uso deleteOnExit non funziona, se uso invece .delete poi non visualizzo l'imm per intero, come se non avesse avuto il tempo di copiarla tutta. Come posso fare?
    Girando tra i forum ho letto che dovrei fare close() dell' ogg che uso x leggere o scrivere il file temp, come reader o writer, ma qui io non li uso e non so come fare!

  7. #7
    Il file temporaneo, di solito, viene spostato, non copiato.
    Ho notato che dopo un po si autocancellano

  8. #8
    Originariamente inviato da lucavizzi
    Il file temporaneo, di solito, viene spostato, non copiato.
    il problema è che il file temporaneo me lo chiama per es cosi: upload_bd75b80_13c8c25a138__8000_00000017.tmp..io invece voglio un'imm jpeg che inizi per imm e con il metodo che ho scritto io infatti mi crea, oltre al file tmp anche un file imm8331411369713928615.jpeg

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 © 2026 vBulletin Solutions, Inc. All rights reserved.