Terkadang, kita harus menggabungkan beberapa file menjadi satu atau disebut juga mengkompress sebelum kita mengirimnya ke seseorang yang kemudian itu juga akan mempermudah pekerjaan kita. Sebagai contoh, jika kita menggunakan ASP.NET 4.5.2 yang memungkinkan pengguna untuk mendownload beberapa file kita tadi secara bertahap atau mendownload file tersebut satu-satu, lebih baik kita mengkompress atau menggabungkan beberapa file tadi menjadi satu didalam ZIP, yang kemudian akan mempermudah pengguna untuk mendownload hanya sekali tanpa harus mendownload satu-satu atau bertahap. Dengan ini kita juga telah menghemat tanpa harus membuang-buang waktu. Di dalam artikel ini kami akan membagikan sebuah cara sederhana untuk membuat duplikat dari post kita tanpa menggunakan FTP. Di dalam artikel ini kami akan mmemberikan solusi untuk menciptakan sebuah URL yang memungkinkan kita untuk men-download folder tulisan yang dikompress ke dalam ZIP Archive. Untuk melakukan zipping, kami menggunakan DotNetZip yang tersedia sebagai paket nuget dan memiliki bersih API bagus.
Kemudian pada tampilan Razor (misalnya export.cshtml), kode berikut dapat digunakan untuk membuat arsip zip:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@using Ionic.Zip @{ Response.Clear(); Response.BufferOutput = false; // for large files System.Web.HttpContext c= System.Web.HttpContext.Current; string archiveName= String.Format("archive-{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss")); Response.ContentType = "application/zip"; Response.AddHeader("content-disposition", <br> "filename=" + archiveName); var postsFolder = Server.MapPath("~/posts"); using (ZipFile zip = new ZipFile()) { zip.AddDirectory(postsFolder); zip.AddEntry("Readme.txt", String.Format("Archive created on {0}", DateTime.Now); zip.Save(Response.OutputStream); } Response.Close(); } |
Sangat mudah bukan? Pada baris kode di atas kami juga telah menunjukkan bagaimana untuk menambahkan Readme.txt kustom kita sendiri dengan string. Jika anda lebih suka menambahkan setiap file secara manual, hanya perlu penghitungan file untuk ditambahkan ke zip.AddFiles. Akhirnya, hal itu mungkinbukan ide bagus untuk membiarkan siapa pun mengaksesnya, sehingga Anda dapat melindungi dengan panggilan sederhana untuk isAuthenticated:
if (User.Identity.IsAuthenticated)