2013-02-15 10 views
6

Mam następujący utworzenia:moduł NET Ionic.Zip zabijając miejsca na dysku

  • Win2008 server
  • Ionic.zip moduł odniesienia
  • Napęd indywidualne dla budowania pliki zip
  • . NET 4.0

Aplikacja internetowa buduje pakiety zip w locie i pozwala klientowi pobrać pakiet.

Ten system działa cudownie ... aż do teraz.

Ostatnio dodaliśmy kilka większych plików (2GB do 11GB), które wszystkie muszą być opakowane w opakowania przed pobraniem do klienta. Pierwotnie miałem ten system ustawiony tak, aby wszystko działo się w C: (błąd). Od razu, szczególnie w przypadku plików o większych rozmiarach, zaczęły pojawiać się błędy "Nie ma wystarczająco miejsca na dysku". Pierwszą rzeczą, którą zrobiłem, było przeniesienie systemu do pracy na oddzielnym napędzie o pojemności 100 GB (K :). Teraz, gdy pliki te są wydawane do produkcji w intranecie, nadal otrzymuję te błędy.

  1. Mam zadanie zaplanowane, które czyści dysk nocnej, więc nawet przy 100GB I nie powinno być coraz błędy
  2. Zarówno C: i K: mają dużo miejsca
  3. nie mam jeszcze nie wiem, czy jest to C: (nieznany folderu temp ??) lub K: to jest wypełnienie
  4. AKTUALIZACJA - patrząc na dzienników zdarzeń jest to K: który wypełnia się, ale kiedy to sprawdzić, to nie jest pełne ... Więc zakładam, że problem dotyczy pliku tymczasowego ... lub?

Czy jest ktoś, kto może rzucić trochę światła na ten temat lub doradzić w rozwiązywaniu problemów, co się dzieje?

EDIT -----------------------

myślę, że może być coś z metodą kompresji wołam do rozmiar pliku. Obecnie pojawiają się inne błędy:

Rozmiar skompresowany lub Nieskompresowany lub offset przekracza wartość maksymalną. Rozważ ustawienie właściwości UseZip64WhenSaving w instancji ZipFile.

Próbowałem dodając linię zip.CompressionMethod = Zip64Option.AsNecessary myśląc, że ZIP64 będzie konieczne, ale potem mam błąd Unsupported compression method. Nie wiem, dokąd się udać z tymi nowymi informacjami. Myślałem, że ZipDotNet poradzi sobie z tym wszystkim.

To się robi teraz pilna, że ​​użytkownicy próbują pobierz to pliki. Pracuję nad poprawką na razie jako obejście.

więcej Edytuj --------------------

Był to rodzaj Duh momencie zdałem sobie sprawę, że regularne zip ma limit rozmiaru 4 GB. Zip64 ma DUŻO większy limit rozmiaru.

Dodałem linię zip.UseZip64WhenSaving = True do mojego kodu i wygląda na to, że naprawiłem problem. Jak dotąd nie ma problemów.

+0

Wydaje mi się, że może istnieć coś z metody kompresji, którą wzywam do rozmiaru pliku. Próbowałem dodać linię ** zip.CompressionMethod = Zip64Option.AsNecessary ** myśląc, że zip64 będzie potrzebny, ale wtedy dostałem błąd ** Nieobsługiwana metoda kompresji ** –

Odpowiedz

5

Rozwiązanie polega na tym, że nie zwraca się uwagi na ograniczenia rozmiaru pliku ZIP.

Podczas korzystania DotNetZip zip dużych plików o rozmiarze dostaniesz błędy takie jak następujące w kodowaniu asp.net:

  1. Nie ma wystarczająco dużo miejsca na dysku
  2. skompresowanej lub nieskompresowanej wielkości lub przesunięcie przekracza maksymalną wartość. Rozważyć ustawienie właściwości UseZip64WhenSaving na przykład zipfile

Kiedy widzisz te błędy to chyba dobry pomysł, aby zmienić swój kod asp dodając linię:

[yourZipReference].UseZip64WhenSaving = true 

to zmieni swój kod, aby zapisać plik w formacie zip64, więc przed wprowadzeniem tej zmiany może być konieczne sprawdzenie rozmiaru pliku.

Jest inna linia:

[yourZipReference].CompressionMethod = Zip64Option.AsNecessary 

To spowoduje, że moduł do korzystania z metody kompresji zip, który jest odpowiedni dla danej sytuacji, ale nie testowałem jeszcze ten jeden.

+0

Jedyną wadą jest to, że ludzie, którzy pobierają pliki muszą mieć zip reader zdolny do dekompresji formatu Zip64. –

+0

Biorąc pod uwagę, że "standardowy" ZIP nie może obsłużyć plików większych niż 2 GB, nie ma zbyt dużego wyboru - chyba że bierze się pod uwagę zupełnie inne formaty archiwów. – Wormbo

+0

Dzięki chłopaki: tak, uważali te drobne punkty. Na szczęście strona, którą zarządzam, jest częścią intranetu i każdy otrzymuje czytnik zip, który może obsługiwać zip64 ... teraz, jeśli tylko będę w stanie poradzić sobie z ładowaniem razy z większą przyjemnością. O.o –

Powiązane problemy