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

    [Struts&Hibernate]Upload di file

    Ciao a tutti!
    Devo fare un'applicazione con Struts e Hibernate che supporti anche l'upload di file.
    So che per Struts basta che il campo del file lo dichiari nel bean come FormFile invece di File, ma per Hibernate?
    La mia idea sarebbe conservare i file in una cartella upload e conservare il nome del file in un campo del database. Come pensate potrei fare?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    in modo "normalissimo", ossia:
    1- ti scrivi una classe che rapprensenti la tua entita' "FileUploadato". Non so, avra' una String "descrizione" e una String "nomeFile", oppure una String "descrizione", una String "percorso" e una string "nomeFile"... questo te lo vedi tu insomma, a seconda di cosa ti serve gestire e come ti serve gestirlo
    2- fai il mapping di hibernate, esattamente come hai fatto con le altre tue entita' (e ovviamente crei la tabella nel db)
    3- quando ti trovi a gestire l'upload del file, usi FormFile o quello che e', e salvi "fisicamente" il tuo file con un certo nome in un certo percorso. Una volta che l'upload "fisico" dei bytes e' andato a buon fine, crei un'entita' del tipo "FileUploadato" e la riempi con le info derivanti dall'upload (descrizione, nomeFile e percorso ad esempio), e la persisti.

  3. #3
    Ti ringrazio nether, però la tua soluzione risulta un po' complessa per il mio problema.
    Alcune precisazioni:

    -sto utilizzando la possibilità di hibernate di creare DB a runtime
    -sto utilizzando il seguente codice:

    codice:
    Form1 aForm = (Form1) form;
    try {
    	MultipartRequest multi = new MultipartRequest(request , ".");
    	File file=multi.getFile("miofile2");
    	
    	aForm.setMiofile(file.getName());
    	salvaFile(file);
    } catch (Exception e1) {
    	// TODO Auto-generated catch block
    	e1.printStackTrace();
    }
    Session sess = HibernateSessionFactory.currentSession();
    try {sess.save(aForm);
    sess.flush();
    sess.connection().commit();} catch (Exception e) {ActionErrors errors = new ActionErrors();errors.add("generic", new ActionMessage("errors.generic", "Errore nell'inserimento dati: "+e.getMessage())); addErrors(request, errors);return mapping.findForward("failure");
    }
    sess.close();
    Questo perchè non conosco i nomi dei campi a runtime (la mia applicazione in realtà è un "generatore di applicazioni che utilizzano struts e hibernate" ) quindi utilizzo la session factory per aggiungere dati nelle tabelle.

    Attualmente eseguendo il codice scritto sopra (e salvando, come detto già prima, i file in una cartella a parte) ottengo
    java.lang.OutOfMemoryError: PermGen space

  4. #4
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    -sto utilizzando la possibilità di hibernate di creare DB a runtime
    non ho mai provato, spiegami in che senso: intendi dire che i file di mapping entitaJava/tabelleDb esistono, e se la struttura fisica su db non e' presente, viene generata al momento? o in quale altro modo funziona?

    -sto utilizzando il seguente codice:
    cosa c'e' dentro la classe Form1? c'e' anche una proprieta' di tipo FormFile? quindi una tua "entita' base" che vuoi persistere nel db contiene una proprieta' di tipo FormFile (che come ben sai e' una classe di struts)?

    java.lang.OutOfMemoryError: PermGen space
    che application server usi? versione?

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.