Saya cukup yakin ini bukan duplikat jadi tahan dengan saya sebentar.
Bagaimana saya bisa secara programatik (C #) ZIP file (di Windows) tanpa menggunakan perpustakaan pihak ketiga? Saya perlu panggilan windows asli atau sesuatu seperti itu; Saya benar-benar tidak menyukai ide memulai suatu proses, tetapi saya akan melakukannya jika saya harus melakukannya. Panggilan PInovke akan jauh lebih baik.
Gagal itu, izinkan saya memberi tahu Anda apa yang sebenarnya ingin saya capai: Saya perlu kemampuan untuk membiarkan pengguna mengunduh kumpulan dokumen dalam satu permintaan. Ada ide tentang bagaimana mencapai ini?
c#
compression
zip
download
Esteban Araya
sumber
sumber
Jawaban:
Apakah Anda menggunakan .NET 3.5? Anda bisa menggunakan
ZipPackage
kelas dan kelas terkait. Ini lebih dari sekadar membuka daftar file karena ingin jenis MIME untuk setiap file yang Anda tambahkan. Mungkin melakukan apa yang Anda inginkan.Saat ini saya menggunakan kelas-kelas ini untuk masalah serupa untuk mengarsipkan beberapa file terkait ke dalam satu file untuk diunduh. Kami menggunakan ekstensi file untuk mengaitkan file unduhan dengan aplikasi desktop kami. Satu masalah kecil yang kami temui adalah bahwa tidak mungkin hanya menggunakan alat pihak ketiga seperti 7-zip untuk membuat file zip karena kode sisi klien tidak dapat membukanya - ZipPackage menambahkan file tersembunyi yang menggambarkan jenis konten dari setiap file komponen dan tidak dapat membuka file zip jika file tipe konten itu hilang.
sumber
Jika menggunakan 4.5+ Framework, sekarang ada kelas ZipArchive dan ZipFile .
Anda perlu menambahkan referensi ke:
Untuk .NET Core menargetkan net46, Anda perlu menambahkan dependensi untuk
Contoh project.json:
Untuk .NET Core 2.0, hanya perlu menambahkan pernyataan penggunaan sederhana:
sumber
Saya berada dalam situasi yang sama, ingin. NET, bukan perpustakaan pihak ketiga. Seperti poster lain yang disebutkan di atas, cukup menggunakan kelas ZipPackage (diperkenalkan pada .NET 3.5) tidak cukup. Ada file tambahan yang HARUS disertakan dalam arsip agar ZipPackage berfungsi. Jika file ini ditambahkan, maka paket ZIP yang dihasilkan dapat dibuka langsung dari Windows Explorer - tidak ada masalah.
Yang harus Anda lakukan adalah menambahkan file [Content_Types] .xml ke root arsip dengan simpul "Default" untuk setiap ekstensi file yang ingin Anda sertakan. Setelah ditambahkan, saya dapat menelusuri paket dari Windows Explorer atau secara program mendekompresi dan membaca isinya.
Informasi lebih lanjut tentang file [Content_Types] .xml dapat ditemukan di sini: http://msdn.microsoft.com/en-us/magazine/cc163372.aspx
Berikut ini contoh file [Content_Types] .xml (harus diberi nama persis):
Dan C # untuk membuat file ZIP:
catatan:
sumber
sumber
Berdasarkan jawaban Simon McKenzie untuk pertanyaan ini , saya sarankan menggunakan sepasang metode seperti ini:
sumber
Sepertinya Windows mungkin membiarkan Anda melakukan ini ...
Sayangnya saya tidak berpikir Anda akan memulai memulai proses terpisah kecuali jika Anda pergi ke komponen pihak ketiga.
sumber
Tambahkan 4 fungsi ini ke proyek Anda:
Dan gunakan seperti ini:
sumber