/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SoftArtisans FileUp
Fra : Tumlehund
Vist : 491 gange
100 point
Dato : 30-08-01 14:06


Hvordan laver man en progressbar med SoftArtisans Fileup komponent? Jeg har kigget på deres eksempel, men det ser ikke ud som de viser kildekoden den side, som viser hvor meget man har uploadet...

Jeg kan godt få komponenten til at virke - filerne bliver fint uploadet, men min side med progressbaren (en popup-side), som bliver refreshet hvert sekund, viser ingenting. Først når filen er blevet uploadet vises data rigtigt i min progressbar-side.

Er der nogen der har lavet det så det virker, eller kan henvise til et eksempel?

 
 
Kommentar
Fra : gandalf


Dato : 30-08-01 14:49

Hej Tumlehund

Jeg kender ikke til den komponent du taler om der, men jeg har lavet en fil upload komponent på et tidspunkt. Og hvis du kigger i selve headeren på en "Multipart" request, så kan du ikke se, hvor meget en fil fylder på forhånd før hele filen er uploadet. Dvs. det vil være svært at sige hvor mange bytes der er hentet ud af den totale størrelse, så er du sikker på, at det er sådan det skal forståes, og ikke hvad fil man er nået til i forhold til den mængde filer er uploader.

Når en fil bliver uploadet ser requestet ca således ud.

HEADER
......
MULTIPART
Fil**********************************
002345a323au88...............................osv
fil2**********************************
2342340298458092834029384...........osv
End*********************************

Og i headeren står der ikke filernes størrelse eller hvor mange der er, men når du parser headeren kan du altid se, hvornår en fil er færdig. Så jeg tror ikke det kan lade sig gøre, og hvis den komponent du taler om gør det, må der være snyd med i spillet, så må de på en eller anden måde figurere at de kender størrelsen.

Gandalf


Kommentar
Fra : Tumlehund


Dato : 30-08-01 17:36

Ja, jeg er rimelig sikker, men du kan se demo'en her:
http://demo.softartisans.com/demos/FileUpSamples/ProgressIndicator/QueryString/form.asp

og source'en her:
http://demo.softartisans.com/demos/viewsrc.asp?Path=\Demos\fileUpsamples\ProgressIndicator\QueryString\form.asp

Dundas (www.dundas.com) har også en upload komponent med progressbar, men der er bl.a. det minus, at man skal sætte @ENABLESESSIONSTATE=FALSE...

Dundas komponent bruger forøvrigt en "State Server" til at holde styr på hvor mange KB der er upload'et.

Kommentar
Fra : Nyhedsbruger


Dato : 30-08-01 16:30

Tumlehund wrote:
>
>
> Hvordan laver man en progressbar med SoftArtisans Fileup komponent?
> Jeg har kigget på deres eksempel, men det ser ikke ud som de viser
> kildekoden den side, som viser hvor meget man har uploadet...
>
> Jeg kan godt få komponenten til at virke - filerne bliver fint
> uploadet, men min side med progressbaren (en popup-side), som
> bliver refreshet hvert sekund, viser ingenting. Først når filen
> er blevet uploadet vises data rigtigt i min progressbar-side.

Har du slået sessionstate fra?

--
Anders

Kommentar
Fra : Tumlehund


Dato : 30-08-01 17:39

Hmmm... Skal man det? Jeg ved man skal på Dundas upload komponent, men jeg kan ikke finde noget info om det i dokumentationen til SA-FileUp.

Hvorfor skal man iøvrigt slå sessionstate fra? (kan man undgå det?)

Kommentar
Fra : gandalf


Dato : 31-08-01 08:58

Hej Tumlehund

Du skal trykke på "Skriv til nyhedsbruger" for at Anders kan læse dit indlæg.
Når jeg kigger på deres eksempel kan man tydelig se, at det ikke virker optimalt, og at de snyder med deres progressbar, for den henter først det meste af filen før den går igang, prøv selv med en stor fil.

Gandalf

Kommentar
Fra : Tumlehund


Dato : 31-08-01 10:02

> Har du slået sessionstate fra?
>
> --
> Anders

Hmmm... Skal man det? Jeg ved man skal på Dundas upload komponent, men jeg kan ikke finde noget info om det i dokumentationen til SA-FileUp.

Hvorfor skal man iøvrigt slå sessionstate fra? (kan man undgå det?)

Kommentar
Fra : Nyhedsbruger


Dato : 31-08-01 09:11

Tumlehund wrote:
>
> > Har du slået sessionstate fra?
>
> Hmmm... Skal man det? Jeg ved man skal på Dundas upload komponent,
> men jeg kan ikke finde noget info om det i dokumentationen til
> SA-FileUp.
>
> Hvorfor skal man iøvrigt slå sessionstate fra? (kan man undgå det?)

Når du laver en progress bar med den angivne methode, har du to browser
vinduer: Et som henter en enkelt side (ved at sende den uploadede fil)
og et andet hvori der løbende hentes nye sider, der beskriver hvormeget
af filen, serveren har modtaget (progress baren). Jeg asp vil kun
generer en side af gangen fra samme session (det kan du f.eks. også
observerer ved reload af det frameset, hvor framesne er genereret af
asp). Dette er muligvis for at undgå problemer forbundet til
multi-threading (problemer hvis to processer forsøger at opdaterer samme
resource samtidigt).
Hvis siden der uploades til og siden med progressbaren er i samme
session, kan de altså ikke udføres samtidigt og derfor bliver
progressbaren først opdateret når uploaden er færdig (og så kan det jo
være lidt lige gyldigt). Brug evt. application objektet, hvor du har
lidt bedre kontrol over låsene (via methoderne lock og unlock).

--
Anders

Kommentar
Fra : Tumlehund


Dato : 31-08-01 10:17

Hej Gandalf

Nu har jeg lige prøvet med en 6+ MB fil, og det *ser ud til* at virke fint. Det er muligt de "snyder", men de er gode til at snyde så... Progressbarens vigtigste funktion er, at den viser hvor meget der uploadet og meget der mangler at blive uploadet, og det synes jeg eksemplet gør udemærket. Det er i hvert fald en *væsentlig* forbedring ift. ikke at vise noget. Hvis ikke den progressbar-side var der ville man kun have den blå bar i bunden af browseren, og hvis det er stor fil (eller man har en langsom forbindelse), kan man hurtigt komme til at tro at browseren bare "hænger".

Jeg vil dog stadig gerne vide:
1) Er det nødvendigt at sætte @ENABLESESSIONSTATE=FALSE når man skal have en progressbar?
2) Hvordan får jeg iøvrigt eksemplet til at virke - med eller uden snyd

Det er muligt, at jeg skal bruge en anden tilgang til det her, men det jeg gerne vil opnå er at folk kan uploade filer til serveren og samtidig få information om hvor meget der er uploadet og hvor meget der mangler...

Kommentar
Fra : Tumlehund


Dato : 31-08-01 10:38

> Når du laver en progress bar med den angivne methode, har du to browser
> vinduer: Et som henter en enkelt side (ved at sende den uploadede fil)
> og et andet hvori der løbende hentes nye sider, der beskriver hvormeget
> af filen, serveren har modtaget (progress baren). Jeg asp vil kun
> generer en side af gangen fra samme session (det kan du f.eks. også
> observerer ved reload af det frameset, hvor framesne er genereret af
> asp). Dette er muligvis for at undgå problemer forbundet til
> multi-threading (problemer hvis to processer forsøger at opdaterer samme
> resource samtidigt).
> Hvis siden der uploades til og siden med progressbaren er i samme
> session, kan de altså ikke udføres samtidigt og derfor bliver
> progressbaren først opdateret når uploaden er færdig (og så kan det jo
> være lidt lige gyldigt). Brug evt. application objektet, hvor du har
> lidt bedre kontrol over låsene (via methoderne lock og unlock).
>
> --
> Anders

OK, tak for svaret! Når man nu sætter <%@ENABLESESSIONSTATE=FALSE%> (som SKAL stå øverst i side), så kan man jo ikke længere tilgå sine sessionvariabler. Hvad gør jeg så, hvis jeg *f.eks.* har gemt userID i en session-variabel og gerne vil bruge den variabel på de sider hvor <%@ENABLESESSIONSTATE=FALSE%> er øverst på siden? Jeg ved godt jeg kan overføre userID v.h.a. POST eller GET, men det er ikke særlig smart, da enhver så bare kan gå ind og skrive et andet userID i HTML'en. Kan man gøre det på en anden måde? (måske skrive det I DB'en, og så hente det igen - performance?)

Accepteret svar
Fra : Nyhedsbruger

Modtaget 100 point
Dato : 31-08-01 09:47

Tumlehund wrote:
>
> > [Session-state skal slås fra for at få en progressbar til at
> > virke via den angivne methode]
> > Brug evt. application objektet, hvor du har
> > lidt bedre kontrol over låsene (via methoderne lock og unlock).
>
> OK, tak for svaret! Når man nu sætter <%@ENABLESESSIONSTATE=FALSE%>
> (som SKAL stå øverst i side), så kan man jo ikke længere tilgå sine
> sessionvariabler. Hvad gør jeg så, hvis jeg *f.eks.* har gemt
> userID i en session-variabel og gerne vil bruge den variabel på de
> sider hvor <%@ENABLESESSIONSTATE=FALSE%> er øverst på siden?

Som jeg skrev til sidst, så kan du måske bruge application objektet og
så lave din egen poor-mans-session (find på en tilfældig kode, gem
userId'et i application objektet under denne kode og før denne kode over
via query-string'en).

--
Anders

Godkendelse af svar
Fra : Tumlehund


Dato : 10-09-01 17:49

OK, jeg prøver fattigmandsudgaven...             

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177426
Tips : 31962
Nyheder : 719565
Indlæg : 6407926
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste