Avatar billede davidfossil Nybegynder
25. januar 2006 - 22:43 Der er 1 kommentar og
1 løsning

To zip-filer der burde være ens

Jeg sidder med en virkelig mærkelig situation, som jeg efterhånden selv er ved at give op overfor. Håber at nogen gider læse min historie, og er i stand til at give et råd på vejen.

I en ASP.NET applikation skrevet i C#, skal jeg ZIP komprimere ind fil som skal streames direkte til klienten. Jeg bruger SharpZipLib til at komprimere med, ved at skrive til en ZipOutputStream på en BufferedStream som skriver videre til Response.OutputStream (ZipOutputStream kan ikke skrive direkte til en HttpStream).

Det hele forløber umiddelbart som det skal, og jeg får da også en ZIP fil retur som jeg med mit alm. ZIP-værktøj (7zip) kan åbne uden problemer. Desværre vil den applikation der skal bruge filen (et Delphi program som jeg ikke har forstand på) ikke læse indholdet af min ZIP-fil. I mit forsøg på at finde fejlen har jeg ladet min server applikation skrive filen såvel til HTTP som til en fil på serverens harddisk. Når jeg sammenligner de to filer jeg får ud af dette i 7zip er der ingen forskelle at spore. Sammenligner jeg derimod filernes binære indhold, viser det sig at der i starten og slutningen af filerne er en smule forskel på indholdet.

Det er denne forskel mellem de to filer jeg ønsker at få kortlagt. Hvad er forskellen, hvad skyldes den og kan jeg slippe for den?

Jeg har lagt to zip-filer op som I kan lege med:
http://malamute.dk/test1.zip
http://malamute.dk/test2.zip

Og nej - det er ikke Limecat jeg skal distribuere med denne applikation, men den var da meget sjov til en test :)

På forhånd tak - håber at nogen har et bud der kan sende mig på sporet igen :)
Avatar billede Slettet bruger
30. januar 2006 - 06:55 #1
Måske det er fint nok at bruge en BufferedStream, men grunden til at den ikke vil skrive direkte til Response.OutputStream skyldes at den stream den skriver til skal være seekable og det er Response.OutputStream ikke, BufferedStream får den sikkert til at se sådan ud men ivirkeligheden vil bufferen jo blive tømt på et tidspunkt og så er den jo ikke seekable - i sin fulde udstrækning. Jeg tror du skal forsøge at skrive filen fuldstændigt enten til en MemoryStream, hvis det er muligt i forhold til hvad det du skal zippe fylder, eller også skrive det til en lokal-file, som du så skriver til Response.OutputStream.
Avatar billede davidfossil Nybegynder
30. marts 2006 - 22:25 #2
Ikke noget der hjalp mig til løsningen af mysteriet, men tak skal du have for kommentaren. Jeg lukker selv her, men er selvfølgelig klar til at åbne igen hvis du (eller andre) skulle finde på en løsning :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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