Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24

    immagini salvate su database

    ciao a tutti,
    volevo condividere un piccolo problema :master:

    in particolare l'evento "onProgress" dell'oggetto MovieClipLoader.

    Utilizzo il MovieClipLoader.loadClip(URL,ecc.) per caricare le immagini e tenere sotto controllo lo stato di avanzamento del download delle immagini.

    Le immagni sono salvate su database.

    "URL" e' una servlet che fa una query su db e mi restituisce i bytes che rappresentano l'immagine.

    L'immagine arriva tranquillamente, il problema l'ho riscontrato con l'evento onProgress che utilizzo per gestire la barra di avanzamento.

    Mettendo in trace le chiamate a "onProgress", vedo lo stato di avanzamento del download fino a un certo punto (diciamo fino al 30%), poi non succede nulla fino al caricamento totale dell'immagine. E' come se onProgress venisse chiamato solo un tot di volte.

    Premetto che il mime/type della response e' "image/jpg" e che sulla response viene settato anche la dimensione corretta dell'immagine.

    Grazie in anticipo a tutti

    CYA

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ricorda che le prove con il MovieClipLoader vanno fatte sul web perchè l'evento onLoadProgress non funziona o funziona male da "Prova filmato", tu come provi?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24
    Ad essere sincero credo di non averlo provato il file swf dentro il pacchetto che devo pubblicare.

    Le prove che ho fatto dovrebbero essere queste :

    In locale, con l'application server in piedi, ho impostato l'url in questo modo :

    URL = "http://127.0.0.1:8080/webappname/servlet"


    Non posso provare direttamente su web, ma se metto il swf nel pacchetto web (per Tomcat un file.war) e starto Tomcat pensi che la prova sia analoga?

    cmq ora provo e poi ti dico

    Cya

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24
    purtroppo con la prova che ho fatto mi si ferma al 24%.

    ho notato che se sulla response non metto il contentLength, l' swf non sa quale e' la dimensione di quello che sta scaricando e quindi la barra di avanzamento va da 0 a 100% nel momento in cui il file e' completamente scaricato.

    se imposto il contentlength, quindi l'swf sa quanto deve scaricare, arriva fino al 24% e poi si pianta. Dopo un po' tira fuori l'immagine ma la barra di avanzamento e' rimasta al 24%.

    Forse sbaglio qualcosa nell'header della response.... bo??

    Oppure e' sufficiente metterlo sul web.. quando potro' sara' la prima prova che faro'.

    Grazie mille.

    Se avete qualche altra idea fate un fischio.

    Cya

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    la prova dovrebbe essere analoga, apparte il fatto che il caricamento dovrebbe essere pressochè istantaneo visto che stai in locale

    se si ferma al 24% le cose son due... o in effetti l'header manca di qualche informazione oppure c'è qualcosa di sbagliato impostato nel codice di caricamento... altro non mi viene in mente

    magari fai una prova tanto per essere sicuro del codice del loader e carica un'immagine vera e propria al posto di quella estratta da DB... vedi se si comporta alla stessa maniera o se carica correttamente

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24
    gia' avevo provato, se punto a una risorsa su file system si coporta correttamente

    Cmq posto il codice fla :

    // progress bar
    my_pb.mode="manual";

    // questa mi serve per passare un timestemp altrimenti ho problemi di cache
    function getData():String{

    var timestempate = new Date();
    var anno = timestemp.getFullYear().toString();
    var mese = timestemp.getMonth().toString();
    var giorno = timestemp.getDate().toString();
    var ora = timestemp.getHours().toString();
    var minuto = timestemp.getMinutes().toString();
    var secondo = timestemp.getSeconds().toString();
    var millisecondo = timestemp.getMilliseconds().toString();

    var ritorno:String = new String(anno+"-"+mese+"-"+giorno+"-"+ora+"-"+minuto+"-"+secondo+"-"+millisecondo);
    return ritorno
    }



    // chiamata alla servlet
    var callServlet = "http://127.0.0.1:8080/salsafm-struts/getFotoNormale.fm?date="+getData()+"&idFoto=41";

    // chiamata a una risorsa locale
    //var callServlet = "image.jpg";

    this.createEmptyMovieClip("img_mc", 999);
    var my_mcl:MovieClipLoader = new MovieClipLoader();



    // Crea un oggetto listener:
    var mclListener:Object = new Object();

    mclListener.onLoadError = function(target_mc:MovieClip, errorCode:String, status:Number) {
    trace("Error loading image: " + errorCode + " [" + status + "]");
    };
    mclListener.onLoadStart = function(target_mc:MovieClip):Void {
    trace("onLoadStart: " + target_mc);
    };
    mclListener.onLoadProgress = function(target_mc:MovieClip, numBytesLoaded:Number, numBytesTotal:Number):Void {
    trace("numBytesLoaded: " + numBytesLoaded);
    trace("numBytesTotal: " + numBytesTotal);
    var numPercentLoaded:Number = Math.round(numBytesLoaded / numBytesTotal * 100);
    my_pb.setProgress(numBytesLoaded,numBytesTotal);
    trace("onLoadProgress: " + target_mc + " is " + numPercentLoaded + "% loaded");
    };
    mclListener.onLoadComplete = function(target_mc:MovieClip, status:Number):Void {
    trace("onLoadComplete: " + target_mc);
    trace("onLoadComplete: status " + status);
    };

    mclListener.onLoadInit = function(target_mc:MovieClip){
    trace("onLoadInit: " + target_mc);
    trace("width: " + target_mc._width);
    trace("heigth: " + target_mc._height);
    target_mc._width = 500;
    target_mc._height = 350;
    }


    my_mcl.addListener(mclListener);


    my_mcl.loadClip(callServlet, img_mc);



    Grazie della pazienza

    CYA

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il codice è ok... poco da fare, credo che a questo punto il problema sia da cercare in quello che produce l'output dal DB, solo che in quel caso non saprei aiutarti, conosco solo PHP come linguaggio server side

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da and80
    il codice è ok... poco da fare, credo che a questo punto il problema sia da cercare in quello che produce l'output dal DB, solo che in quel caso non saprei aiutarti, conosco solo PHP come linguaggio server side e l'estensione .fm non so a cosa si riferisca esattamente
    azz... ho sbagliato... volevo modificare e invece ho quotato

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24
    ho risolto

    il problema era lato server

    grazie del supporto

    cmq, per quanto riguarda l'estensione .fm e' solo un modo per mappare le servlet. Ovvero se il file si chiama ImageServlet, e' possibile rimappare il nome in cio' che si vuole, tipo :

    "voglioImmagine.fm" , "hoBisognoDeStaBenedettaImmagine.tranz", ecc. ecc.

    CYA

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ah, in pratica come per il modrewrite nel file .htaccess

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.