zip gebruiken binnen java (web) omgeving

Pagina: 1
Acties:
  • 166 views sinds 30-01-2008
  • Reageer

  • morpheus
  • Registratie: November 1999
  • Laatst online: 12-09 17:35
Ik ben aan het uitzoeken hoe ik meerdere bestanden kan zippen met behulp van java applicaties.

Hierbij denk ik dan aan javascript, java-applets, servlets of JSP. Op een webpagina zou je dan bestanden kunnen selecteren (browsen over je computer) en als alles geselecteerd is moeten alle bestanden in 1 zip ingepakt worden.

Nu vind ik het nogal lastig om hier info over te vinden. Mijn voorkeur gaat uit naar servlets en JSP, maarja, aangezien die serverside zijn ben ik bang dat dat niet gaat lukken :) (kan het wel, laat het dan even weten). Met javascript of java-applets heb ik ook nog niet veel geluk gehad.

Ik hoef dus niet te weten hoe die code eruit ziet. Ik wil meer weten of het mogelijk is en waar ik dan eventueel info kan vinden hoe ik dit voor elkaar kan krijgen.

thanks already

3kwp pvoutput


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 13:51

Janoz

Moderator Devschuur®

!litemod

Wat wil je nu precies doen? Dat mensen bestanden op hun eigen hardeschijf kunnen selecteren, deze vervolgens in 1 zip bestand wordt gestopt, en dit zip bestand vervolgens naar de server wordt gestuurd?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com


  • morpheus
  • Registratie: November 1999
  • Laatst online: 12-09 17:35
Op maandag 17 september 2001 09:14 schreef Janoz het volgende:
Wat wil je nu precies doen? Dat mensen bestanden op hun eigen hardeschijf kunnen selecteren, deze vervolgens in 1 zip bestand wordt gestopt, en dit zip bestand vervolgens naar de server wordt gestuurd?
misschien was ik inderdaad te onduidelijk, maar ja, dit is precies wat ik wil doen.
Op maandag 17 september 2001 09:15 schreef wasigh het volgende:
javascript != java !!

zie verder: http://java.sun.com/j2se/1.3/docs/api/java/util/zip/package-summary.html
daar heb je eigenlijk wel gelijk in ja. Het schoot me eventjes te snel binnen en niet verder bij nagedacht

3kwp pvoutput


  • morpheus
  • Registratie: November 1999
  • Laatst online: 12-09 17:35
[b]Op maandag 17 september 2001 09:15 schreef wasigh
zie verder: http://java.sun.com/j2se/1.3/docs/api/java/util/zip/package-summary.html
Alvast bedankt hiervoor. Nu weet ik dat ik dit kan toepassen met servlets en JSP. Echter heb ik weinig ervaring met applets. Kan ik dit hierbij ook gebruiken???

Probleem is namelijk zoals ik al zei dat ik het niet zo voor me zie om met servlets of JSP het voor elkaar te krijgen dat een gebruiker bestanden kan selecteren (op zijn locale pc) en deze dan laat inpakken. Of kan dit toch?

3kwp pvoutput


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Met applets kun je "per definitie*" geen bestanden lezen en schrijven.

Het is mogelijk, (maar niet triviaal) om met jsp (en servlets) bestanden te uploaden, te zippen en op te sturen naar de gebruiker.
Waarschijnlijk kun je beter een Application schrijven ?

(* uitzonderingen daargelelaten)

  • morpheus
  • Registratie: November 1999
  • Laatst online: 12-09 17:35
Op maandag 17 september 2001 10:10 schreef wasigh het volgende:
Met applets kun je "per definitie*" geen bestanden lezen en schrijven.

Het is mogelijk, (maar niet triviaal) om met jsp (en servlets) bestanden te uploaden, te zippen en op te sturen naar de gebruiker.
Waarschijnlijk kun je beter een Application schrijven ?

(* uitzonderingen daargelelaten)
Hmmm, dat zou jammer zijn als dat niet lokaal bij de client kan gebeuren. potentieel zijn het namelijk grote textbestanden die verstuurd moeten worden, die ongeveer 8 keer kleiner zouden zijn in zip formaat. Als het echt niet kan moet er dus naar andere oplossing gekeken worden.

Iemand die weet hoe zoiets toch zou kunnen, tips altijd welkom :)

3kwp pvoutput


Verwijderd

Je zou wel evt. in IE een ActiveX control kunnen maken die dit voor je doet.

Met ActiveX heb je geen sandbox model (zoals Java applets dat wel hebben) die je mogelijkheden beperkt. Da's de goeie en direct ook slechte kant ervan.

HTH :)

  • morpheus
  • Registratie: November 1999
  • Laatst online: 12-09 17:35
Het lastige is juist dat een van de vereisten dat de client niets geinstalleerd hoeft te hebben.

Het moet dus standaard werken. En volgens mij moet je bij activex wel iets dergelijks installeren om het te kunnen gebruiken.

3kwp pvoutput


Verwijderd

Op maandag 17 september 2001 11:48 schreef morpheus het volgende:
Het lastige is juist dat een van de vereisten dat de client niets geinstalleerd hoeft te hebben.

Het moet dus standaard werken. En volgens mij moet je bij activex wel iets dergelijks installeren om het te kunnen gebruiken.
Da's half waar.

Bij ActiveX wordt er inderdaad wel iets geinstalleerd, maar dat gebeurt automatisch tijdens het bekijken van de pagina zonder dat de gebruiker er iets van merkt. Dus de gebruikerservaring is dat hij niets hoeft te installeren.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 17 september 2001 11:51 schreef MrX het volgende:
Bij ActiveX wordt er inderdaad wel iets geinstalleerd, maar dat gebeurt automatisch tijdens het bekijken van de pagina zonder dat de gebruiker er iets van merkt. Dus de gebruikerservaring is dat hij niets hoeft te installeren.
Behalve dat ie nog op "yes" moet drukken (als het goed is) bij de "do you want to allow this activeX thingy?" vraag ;)

Verwijderd

Op maandag 17 september 2001 11:56 schreef ACM het volgende:

[..]

Behalve dat ie nog op "yes" moet drukken (als het goed is) bij de "do you want to allow this activeX thingy?" vraag ;)
Inderdaad, afhankelijk van je security settings krijg je inderdaad zo'n boodschap (en da's wel een goeie zaak).

  • Juup
  • Registratie: Februari 2000
  • Niet online
Hmmm... heb wel eens een java applet gezien die gewoon files van mijn HD kon lezen. Moest geloof ik wel eerst op Yes drukken ofzo... om de java security restricties wat losser te maken. Het kan i.i.g. wel.

Oh als het gelukt is, post dan hier nog effe het resultaat a.u.b. (= vewy intewesting)

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dubbel programmeren is ook zonde, dus hier een heel simpel voorbeeld hoe je files kan inpakken en uitpakken:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
    /**
     * Packs all files the specified directory into the specified file.
     * 
     * Warning: the current implementation only allows the packing of a lineair direcotry (without
     * sub-directories).
     */
    public static void pack(File directory, File zipFile) throws IOException
    {
        pack(directory.listFiles(), zipFile);
    }

    /**
     * Packs all specified files into the specified file.
     *
     * Warning: the files are not allowed to be directories in the current implementation.
     */
    public static void pack(File[] files, File zipFile) throws IOException
    {
        if(!zipFile.exists())
        {
            zipFile.createNewFile();
        }
      
      DefaultStreamWriteTools tools = new DefaultStreamWriteTools();

//      ZipFile zip = new ZipFile(zipFile);

        FileOutputStream     fileOutputStream    = new FileOutputStream(zipFile);
        ZipOutputStream  output             = new ZipOutputStream(fileOutputStream);        

        for(int i=0;i<files.length;i++)
        {
            output.putNextEntry(new ZipEntry(files[i].getName()));
            FileInputStream input = new FileInputStream(files[i]);

            tools.write(output, input);

            input.close();
            output.closeEntry();
        }

        output.close();
    }


    /**
     * Extracts the specified File, which must be in zip format, into the specified directory.
     *
     * Warning: the current implementation only allows extraction of a zip file without directories.
     */
    public static void extract(File zipFile, File directory) throws IOException
    {
        ZipFile zip = new ZipFile(zipFile);

        Enumeration entries = zip.entries();

        InputStream input = null;
        FileOutputStream output = null;
      
      DefaultStreamWriteTools tools = new DefaultStreamWriteTools();
      
        try
        {
            while(entries.hasMoreElements())
            {
                ZipEntry activeEntry = (ZipEntry)entries.nextElement();

                String name = activeEntry.getName();
    
                File file = new File(directory, name);

                if(!activeEntry.isDirectory())
                {
                    input =  zip.getInputStream(activeEntry);
                    output = new FileOutputStream(file); 

                    tools.write(output, input);

                    input.close();
                    output.close();
                }
            }
        }
        finally
        {
            try
            {
                if(output != null)  
                {
                    output.close();
                }

                if(input != null)
                {
                    input.close();
                }
                zip.close();
            }
            catch(IOException exc)
            {
            }
        }
    }

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1