Ciao
Sto cercando di creare uno script che controllando il peso capisce quando un file è definitivamente arrivato nella cartella.
Ho fatto delle prove con f.Size ma senza risultati apprezzabili.
Help me
Ciao
Sto cercando di creare uno script che controllando il peso capisce quando un file è definitivamente arrivato nella cartella.
Ho fatto delle prove con f.Size ma senza risultati apprezzabili.
Help me
Comunque Grazie
Non pensavo che fosse un problema cosi difficile.
In realtà pensavo di realizzare un If che ciclicamente controllasse il peso file.
Mi spiego:
Se leggo il file in download il peso non sarà mai lo stesso quindi se il mio ciclo if vede che il peso non cambia il file in teoria è completato.
Mi date un aiuto a fare questo??
Grazie
Comunque Grazie
non è molto chiaro... qualche ipotesi
1. un utente lo sta scaricando dal tuo sito... con un download forzato a blocchi te ne accorgi quando invii l'ultimo blocco
2. se lo stai ricevendo (non stai facendo upload) quello che vuoi fare lo puoi fare solo con un ciclo che manderebbe la cpu alle stelle fino a quando non ti arriva tutto
se non ho capito >![]()
quotando il punto 1 di cicciopie, aggiungo al punto 2 che con asp non è possibile sapere lo stato di avanzamento dell'upload di un file sul server ( al contrario di altri linguaggi come php ).
![]()
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Ciao
L'ipotesi corretta è la seconda.
Nella mia piccolezza avevo preventivato che con un loop avrei sovraccaricato la CPU ma pensavo di fare una lettura del peso file ogni 15 secondi circa.
Se il peso non cambia ecco che il file è completo.
Tra l'altro i file sono molto pesanti quindi verrebbero messi sul server in minuti, quindi avrei tutto il tempo di fermare la lettura e riprenderla con i dovuti tempi per non sovraccaricare il sistema.
Tutto qui
Comunque Grazie
allora..Originariamente inviato da fosforo
Ciao
L'ipotesi corretta è la seconda.
Nella mia piccolezza avevo preventivato che con un loop avrei sovraccaricato la CPU ma pensavo di fare una lettura del peso file ogni 15 secondi circa.
Se il peso non cambia ecco che il file è completo.
Tra l'altro i file sono molto pesanti quindi verrebbero messi sul server in minuti, quindi avrei tutto il tempo di fermare la lettura e riprenderla con i dovuti tempi per non sovraccaricare il sistema.
Tutto qui
quando tu fai il submit del form che contiene il file da uplodare, verso la tua pagina do_upload.asp, IIS prima si carica il file sul server, e poi si manda in esecuzione la pagina do_upload.asp. Quindi, qualsiasi controllo tu metta nella pagina do_upload.asp, è assolutamente inutile perchè verrà effettuato dopo l'upload del file.
Altri linguaggi invece sono piu trasparenti e ti permettono di sapere quanto file è stato uplodato e quindi poter fare la progress o cose simili durante l'upload.
L'unica sarebbe scoprire dove IIS crea il file temporaneo e salva i byte rucevuti dall'upload, ma cmq non è una cosa percorribile o percorribile facilmente
NOTA: dico questo per esperienza personale e ricerche sparse so google. Non pretendo di avere ragione al 100% sul discorso
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Devo chiedere scusa perchè probabilmente mi sono spiegato male.
Rifo da capo.
Ho una cartella dove via FTP vengono scaricati dei file.
Chiaramente non conosco la dimensione dei file che verrnno scaricati.
Devo però, una volta che i file sono scaricati completamente, spostarli da quella cartella a altre apposite cartelle.
Perchè ho pensato in ASP?
Perchè i file che vengono scaricati nella mia cartella sono poi gestiti attraveso un sito.
Il problema è che fino a quando i file sono in download non possono essere toccati.
Sto provando a realizzare una Funcion utilizzando l'oggetto "f.Size" del tipo:
leggo il peso del mio file e lo memorizzo nella variabile X
X = PesoMioFile
creo una pausa di 10 Sec
Rileggo il peso file e lo inserisco nella variabile Y
Se X = Y allora il file è completo
Se X < Y allora il file è ancora in download.
è nella costruzione di questa Funcion che trovo difficoltà.
Comunque Grazie
ecco ora è più chiaro il problema...Originariamente inviato da fosforo
Devo chiedere scusa perchè probabilmente mi sono spiegato male.
Rifo da capo.
Ho una cartella dove via FTP vengono scaricati dei file.
Chiaramente non conosco la dimensione dei file che verrnno scaricati.
Devo però, una volta che i file sono scaricati completamente, spostarli da quella cartella a altre apposite cartelle.
Perchè ho pensato in ASP?
Perchè i file che vengono scaricati nella mia cartella sono poi gestiti attraveso un sito.
Il problema è che fino a quando i file sono in download non possono essere toccati.
Sto provando a realizzare una Funcion utilizzando l'oggetto "f.Size" del tipo:
leggo il peso del mio file e lo memorizzo nella variabile X
X = PesoMioFile
creo una pausa di 10 Sec
Rileggo il peso file e lo inserisco nella variabile Y
Se X = Y allora il file è completo
Se X < Y allora il file è ancora in download.
è nella costruzione di questa Funcion che trovo difficoltà.
con asp non c'è modo di inserire pause... o meglio... potresti usare xmlhtpp per chiamare una pagina asp.net che dispone del comando sleep... quindi basterebbe un semplice ciclo che esca quando è soddisfatta la condizione che hai indicato
oppure usare una pagina con tag meta refresh a 10 secondi che fa i controlli del caso... passa il peso del file per querystring o var session
No asp non fa per te.. o meglio dovresti mettere uno schedule che ogni 10 secondi richiami la pagina asp che fa un controllo sui file presenti nella cartella e se le condizioni sono verificate sposta il file.. 2 problemi:
1) intanto non è detto che le dimensioni del file siano quelle parziali durante l'upload ma può essere che il sistema crei un file da XXmb e poi lo "riempie" con pacchetti da YKB (molti programmi fanno così, windows non ricordo)
2) come salvarti il peso dei file letto 10 secondi prima (session? db? application?)
cmq niente pause in asp, quindi schedula il tutto.. altrimenti ti fai un mini watchdog in .net che in continuazione ti controlla la cartella citata
![]()
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Io lo posto sperando di non far ridere nessuno.
Visto che mi è stato confermato che in ASP non si possono creare pause io ho scritto questo che oltre a funzionare non impegna la CPU:
Do
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(FolderFrom)
set f = fso.GetFile (("E:\Upload\") & myfile)
PesoUno = f.size
Set Executor = Server.CreateObject("ASPExec.Execute")
Executor.Application = ("c:\inetpub\wwwroot\Pausa20Sec.bat")
intResult = Executor.ExecuteDosApp
PesoDue = f.size
Response.Write(PesoUno & "----" & PesoDue)
Loop Until PesoUno = PesoDue
Nel file Pausa20Sec.bat c'è questo:
ping -n 20 localhost > nul
exit
Cosa ne pensate??
E' una porcheria come soluzione al mio problema????
Comunque Grazie