[JavaScript] img.fileSize

Pagina: 1
Acties:

  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 20-03 18:27

_Gekkie_

And the cow said: Helloooooow?

Topicstarter
Keej:

Ik heb het volgende script:
code:
1
2
3
4
5
6
7
8
9
10
    function TestImage() {
        ...
        localImageName = "file:///c:\test.gif";
        var img = new Image();
        img.src = localImageName;
        var picture_size,width,height;
        width = img.width;
        height = img.height;
        picture_size = img.fileSize;
        ...


Nu geeft picture_size (bijna) altijd -1 aan...

Kheb ge google-ed maar die komt met niets terug... (ook search hier op GoT levert weinig op...) Any Clues?

Gekkie is a proud member of TheBenny!


  • RSchellhorn
  • Registratie: Augustus 2001
  • Laatst online: 23-08 12:41
Ik denk niet dat dat zo gaat met javascript.
Je zou gebruik kunnen maken van Microsoft's 'File System Object'. (als je windows draait)
Dan werkt het zo:

var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.GetFile("c:\\hoi.gif");
alert(file.Size);

Edit: zie ook: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsprosize.asp

[ Voor 33% gewijzigd door RSchellhorn op 20-02-2003 18:25 ]

"Ik heb zo veel soep gegeten, dat kan een mens niet aan. Ik heb zo veel soep gegeten, kan bijna niet meer staan. Ik zat daar maar te slurpen achter die grote kop en als ik bijna klaar was, dan schepten ze weer op!" (Hans Teeuwen)


  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 20-03 18:27

_Gekkie_

And the cow said: Helloooooow?

Topicstarter
hmmmzzz... het was juist de bedoeling dat het ook op een *nix systeem zou kunnen draaien...

Toch is het gekke dat ik het soms wel voor elkaar heb om de juiste size (bytes) eruit te krijgen.. maar een duidelijke regelmaat zit daar niet in...

Gekkie is a proud member of TheBenny!


  • RSchellhorn
  • Registratie: Augustus 2001
  • Laatst online: 23-08 12:41
Zou misschien in het bestand zelf de grootte opgeslagen zijn in de gevallen dat hij het wel doet?
Zou het niet weten, ik wist ook niet dat .fileSize bestaat ;)
Nee verder kan ik je ook niet helpen dan.

"Ik heb zo veel soep gegeten, dat kan een mens niet aan. Ik heb zo veel soep gegeten, kan bijna niet meer staan. Ik zat daar maar te slurpen achter die grote kop en als ik bijna klaar was, dan schepten ze weer op!" (Hans Teeuwen)


  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 20-03 18:27

_Gekkie_

And the cow said: Helloooooow?

Topicstarter
thnx anyway... ach... ik laat het wel even zitten en los het serverside op...

alleen wel jammer dat gebruikers eerst moeten sturen voordat men te lezen krijgt: sorry, het mag niet, want het is te groot ;)

Gekkie is a proud member of TheBenny!


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 16:36

Rhapsody

In Metal We Trust

Het probleem zal veroorzaakt worden door dat het plaatje nog niet helemaal ingeladen is als je de grootte van het plaatje wil checken.
Probeer het eens met een onload event handler.
Bijv.:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    var picture_size,width,height;

    function TestImage() {
        ...
        localImageName = "file:///c:\test.gif";
        var img = new Image();
        img.src = localImageName;
        img.onload = function()
        {
            width = img.width;
            height = img.height;
            picture_size = img.fileSize;
            varsSet();
        }
    }
    function varsSet()
    {
        alert("Klaar met laden.");
    }

[ Voor 3% gewijzigd door Rhapsody op 20-02-2003 20:17 ]

🇪🇺 pro Europa!


  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 20-03 18:27

_Gekkie_

And the cow said: Helloooooow?

Topicstarter
WOEI! :D

het werkt!! ik ben u ZEEEEEER dankbaar!! :D Scheelt weer wat gezooi voor mn gebruikers!

Ik dank u wel!

Gekkie is a proud member of TheBenny!


  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 20-03 18:27

_Gekkie_

And the cow said: Helloooooow?

Topicstarter
Ok... helaas... never shout too soon... :(

Het volledige script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
    function previewImage(formName) {
        localImageName = "file:///"+document.forms[formName].file.value;
        var left, topPos,height_old,width_old,height_new,width_new,picture_size;
        var img = new Image();
        img.src = localImageName;
        img.onload = function()
        {
            width_old  = img.width;
            height_old = img.height;
            picture_size = img.fileSize;
            alert(picture_size + ' en dit was upload_max <?php print UPLOAD_MAX_SIZE; ?>');

        }
        document.forms[formName].file.value = document.forms[formName].file.value;
        MaxSize = '90';
        if (width_old > height_old) {
            width_new = MaxSize;
            height_new = (height_old * MaxSize)/width_old;
        } else if (height_old > width_old) { 
            width_new = (width_old * MaxSize)/height_old;
            height_new = MaxSize;
        } else {
            width_new = MaxSize;
            height_new = MaxSize;
        }           
        if (width_old == '28' && height_old == '30') {
            resetPreview(formName);
            sHTML = '<b>Deze afbeelding is ongeldig</b>';
            idMessage.innerHTML = sHTML
            return false;
        } else if ( picture_size > '<?php print UPLOAD_MAX_SIZE; ?>') {
            alert(picture_size + ' daarom mag het niet...');
            resetPreview(formName);
            sHTML = '<b>Deze afbeelding is te groot.</b>';
            idMessage.innerHTML = sHTML
            return false;
        } else {
            sHTML = '';
            idMessage.innerHTML = sHTML
            sHTML = '<table><tr><td align="center">[img]"'+img.src+'"[/img]
            <br>[img]"/delete.gif"[/img]
            </td></tr></table>';
            idPreview.innerHTML = sHTML
        }
    }

Hierbij werken dus twee dingen gek: die img.size die doet het de ene keer wel (de alert) de andere keer doet ie niks (ik denk cache probleem?)

Het andere probleem is dat de if (picture_size > '<?php print UPLOAD_MAX_SIZE; ?>') het sowieso niet doet (dus als ik in de eerste alert wel toevallig de size in bytes zie... :'(

AAARGH javascript ;)

[ Voor 14% gewijzigd door _Gekkie_ op 21-02-2003 12:36 ]

Gekkie is a proud member of TheBenny!

Pagina: 1