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

    domanda su adodb.stream

    ciao a tutti,
    devo realizzare un metodo per effettuare il download di file da un server web senza mostrare il loro path (per gestirne le relative autorizzazioni a scaricare magari mediante un db access). Ho guardato in giro e mi sembra che l'unico modo per far ciò sia l'utilizzo dell'oggetto adodb.stream, eventualmente dividendo il file in chunks quando si genera la response. La mia domanda è però legata ad un aspetto prestazionale (avrò a che fare con file di grosse dimensioni) ed è questa: quando si chiama il metodo adodb.stream.loadfromfile il file viene caricato intereamente in memoria? perchè questo mi creerebbe evidenti problemi di prestazioni, dovendo scaricare file delle dimensioni anche di 3-400 MB...
    Oppure il file viene caricato in memoria solamente quando si chiama la adodb.stream.read? perchè in tal caso andando con i chunks me la gestirei molto + comodamente
    grazie a chi mi risponderà!!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    A prescindere della parte iniziale, far scaricare in http file di quelle dimensioni e impossibile (credo) avresti diversi problemi oltre alla banda che ti servirebbe non credo che la sessione possa stare aperta per ore, fidati il nascondere l'url e una stupidata nei confronti del download vero e proprio, cerca altre strade tipo connessione ftp.

    P.S. ADODB.Stream da quello che ho capito qui serve per leggere i file binari non per fare i download, poi forse ho capito male.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da optime
    guarda qui

    http://forum.html.it/forum/showthrea...hlight=adosend
    Secondo me se sbagliato lui vuole dowloadare i file non leggerli, credo :master:
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    certo. riprenditi dai bagordi natalizi prima di tranciare simili giudizi ciao bello

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da optime
    certo. riprenditi dai bagordi natalizi prima di tranciare simili giudizi ciao bello
    Con chi dici?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Originariamente inviato da cavicchiandrea
    Con chi dici?
    che vuol dire? è italiano?

  8. #8
    ehm...forse sono stato poco chiaro cerco di spiegarmi meglio:
    Premettoo che non sono il committente quindi mi devo attenere a quello che mi è stato chiesto, vale a dire realizzare una pagina asp per permettere il download di file di vario tipo a clienti che siano autorizzati a farlo. Per far cio mi sembra che la cosa più semplice sia crearmi un piccolo db in access con gli utenti autorizzati, leggerlo da asp e se autorizzati, far partire il download occultando il path fisico del file. Per questa parte di download, ho visto in giro vari script, ma tutti sostanzialmente di questo tipo:
    codice:
    <%      Response.Buffer = False      
    Server.ScriptTimeout = 30000        
    Response.ContentType = "application/x-unknown" ' arbitrary      
    fn = "whatever.jpg"      
    FPath = "c:\" & fn      
    Response.AddHeader "Content-Disposition", "attachment; filename=" & fn        
    Set adoStream = CreateObject("ADODB.Stream")      
    chunk = 2048      
    adoStream.Open()      
    adoStream.Type = 1      
    adoStream.LoadFromFile(FPath)        
    iSz = adoStream.Size        
    Response.AddHeader "Content-Length", iSz        
    For i = 1 To iSz \ chunk          
        If Not Response.IsClientConnected Then Exit For          
        Response.BinaryWrite adoStream.Read(chunk)      
    Next    
    If iSz Mod chunk > 0 Then          
        If Response.IsClientConnected Then              
            Response.BinaryWrite adoStream.Read(iSz Mod chunk)          
        End If      
    End If        
    adoStream.Close      
    Set adoStream = Nothing        
    Response.End  %>
    ora, quello che mi preoccupa è quell'adodb.stream.loadfromfile che, se caricasse l'intero contenuto del file in ram, mi creerebbe seri problemi. La mia domanda era quindi se qualcuno di voi sa cosa fa esattamente quel loadfromfile
    Per il resto non credo di avere problemi, il server è di proprietà dell'azienda committente e quindi posso metterci mani sopra, inoltre la connessione ha banda in upload di 2 Mbit per cui anche i tempi di connessione non penso siano lunghissimi..
    grazie ancora a tutti!!

  9. #9
    lo script che hai postato è molto simile a quello che ho postato io. se guardiamo la bibbia di m$ http://msdn.microsoft.com/en-us/library/ms677570(VS.85).aspx pare proprio che LoadFromFile carichi in RAM il contenuto del file.

    tornando allo script, per un server moderno 300Mb non sono poi tanti; eventualmente swappa su disco; lo script poi lo scarica a blocchi verso il client (è questa la fase più delicata)

    se ti interessa un servizio che faccia quello che ti serve, clicca su "BluFTP" nella mia firma

  10. #10
    mmm...era quello che temevo grazie cmq della risposta, ne parlerò al committente...il problema è che il server su cui devo implementare lo script è un vecchio win2000, ed il committente non immagina di questi problemi..

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.