Avatar billede the_ghost Nybegynder
30. august 2005 - 13:27 Der er 10 kommentarer og
1 løsning

Get File Size ved Upload (javascript / activex)

Er der en måde hvorpå jeg kan få fat i fil størrelsen på en fil der skal uploades ?

.. Det skal gøres klient side, og jeg havde tænkt på noget i retningen af JavaScript / ActiveX, men kan ikke lige gennemskue hvordan det skal gøres.

Problemet er kort og godt, at jeg skal have fil størrelsen på <input type="file" name="b">
Avatar billede roenving Novice
30. august 2005 - 13:36 #1
Det kan netop kun gøres ved hjælp af en activeX-komponent, som i forvejen findes på alle windows-maskiner, men da det indebærer, at du skal rode i brugerens filsystem, kan det absolut ikke anbefales at fremprovokere den dialog-boks, der siger at et farligt script godt vil have adgang til activeX-objekter på maskinen og bagefter at et activeX-objekt ønsker at udføre farlige ting på computeren ...

-- ville du sige ja til det to gange ?-)
Avatar billede the_ghost Nybegynder
30. august 2005 - 13:44 #2
Nu hvor jeg er klar over hvad scriptet gør, vil jeg ikke have noget imod at sige ja til det 2 gange..

Scriptet skal bruges som en del af et større system, dog kan jeg ikke få det til at fungere ordentligt..

Du har tidligere hjulpet mig med næsten det samme, hvor du skrev følgende script:

<script language="javascript" type="text/javascript">
function checkFile(flt){
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var fil = fso.GetFile(flt.value);
  var txt = fil.size;
  alert(txt);
}
</script>

<input type="file" name="fil" onchange="checkFile(this)">


Dette kan jeg dog ikke få til at virke, i IE får jeg følgende fejl:
Error: Automatation server cant create object
Avatar billede roenving Novice
30. august 2005 - 13:50 #3
Hrm, det er godt nok den gammeldags syntaks, men IE er jo herostratisk berømt for at være bagud-kompatibel helt tilbage til dengang ruder Konge var Knægt ...

-- og min egen udgave brokker sig ikke udover sikkerhedsadvarslen !-)
Avatar billede the_ghost Nybegynder
30. august 2005 - 13:54 #4
Efter at have søgt google.dk igennem, støder jeg ind i flere og flere der har det samme problem som mig... Dog kan jeg ikke finde en løsning på problemet... Det skal lige siges at ovenstående script har virket tidligere for mig.
Avatar billede roenving Novice
30. august 2005 - 14:10 #5
Hrm, efter at have gravet lidt i msdn, fandt jeg denne side: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/sgprogrammingfilesystemobject.asp

-- den benytter dog også den gamle syntaks, og det lykkedes mig ikke at finde en udgave, hvor den nye syntaks var benyttet ...

-- men, som det fremgår af linket, er det faktisk den nugældende version af Jscript (v5.6 !-), der refereres til !-)
Avatar billede olebole Juniormester
30. august 2005 - 17:41 #6
<ole>

nøøøhhh ... den syntaks er da ikke blevet ændret i mange år  :)

Der er intet galt med syntaksen i (30/08-2005 13:44:55). Problemet må vist skyldes en sikkerhedsindstilling i din browser

/mvh
</bole>
Avatar billede olebole Juniormester
30. august 2005 - 17:43 #7
Avatar billede olebole Juniormester
30. august 2005 - 17:58 #8
Men hvis det alligevel skal benyttes i IE, kan du vel ligeså godt bruge fileSize-property'en:

<script language="javascript" type="text/javascript">
function checkFile(flt){
    var im = new Image();
    im.onload = checkSize;
    im.src = flt.value;
   
    function checkSize() {
        alert(this.fileSize);
    }
}
</script>

<input type="file" name="fil" onchange="checkFile(this)">
Avatar billede the_ghost Nybegynder
30. august 2005 - 22:22 #9
Nu har jeg prøvet det på 4 forskellige computere, og jeg har ændret sikkerhedsindstillinger, og bla. prøvet at sætte den på det laveste. - Ingenting virker.

olebole >> Dit eksempel fungere ok, hvis jeg tager et billede, men så snart det er en anden fil fungerer det ikke.



Pt. har jeg en fil ved navn files.html og i den står der:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Nyt dokument</title>
<meta name="generator" content="TSW WebCoder">
<script language="javascript" type="text/javascript">
function checkFile(flt){
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var fil = fso.GetFile(flt.value);
  var txt = fil.size;
  alert(txt);
}
</script>
</head>



<input type="file" name="fil" onchange="checkFile(this)">


</body>
</html>

Og jeg får fejlen:
Linje 8
Tegn 3
Fejl: Automation-serveren kan ikke oprette objektet
Kode: 0
URL: http://jyllandsgade13.dk/files.html
Avatar billede olebole Juniormester
31. august 2005 - 03:34 #10
Så har du nok ikke så mange muligheder for at checke før på serveren. Gud være lovet, ser det ud til, MS endelig har lukket helt af for brugen af FSO på klienten  :)
Avatar billede the_ghost Nybegynder
01. november 2005 - 13:13 #11
Jeg fandt aldrig nogen løsning og måtte ty til en java applet!

. Jeg lukker hermed dette spørgsmål
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester