c# – ICSharpCode.SharpZipLib验证zip文件
发布时间:2020-12-15 18:08:06 所属栏目:百科 来源:网络整理
导读:对C#使用ICSharpCode.SharpZipLib,我如何验证传递的文件实际上是一个有效的zip文件(不是右键单击并重命名为.zip的东西)? [HttpPost] public ActionResult Upload(HttpPostedFileBase fileData) { if (fileData != null fileData.ContentLength 0) { if (Pat
对C#使用ICSharpCode.SharpZipLib,我如何验证传递的文件实际上是一个有效的zip文件(不是右键单击并重命名为.zip的东西)?
[HttpPost] public ActionResult Upload(HttpPostedFileBase fileData) { if (fileData != null && fileData.ContentLength > 0) { if (Path.GetExtension(fileData.FileName) == ".zip") { var zipFile = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName)); fileData.SaveAs(zipFile); FileStream fs = System.IO.File.OpenRead(zipFile); ZipFile zf = new ZipFile(fs); foreach (ZipEntry zipEntry in zf) { if (zipEntry.Name.EndsWith(".htm") || zipEntry.Name.EndsWith(".html")) { return Json(new { success = true }); } } fs.Close(); fs.Dispose(); System.IO.File.Delete(zipFile); } else { var fileName = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName)); fileData.SaveAs(fileName); return Json(new { success = true }); } } return Json(new { success = false }); } 解决方法
您可以使用ZipFile.TestArchive方法.以下是在SharpZipLib中声明它的方式:
/// <summary> /// Test an archive for integrity/validity /// </summary> /// <param name="testData">Perform low level data Crc check</param> /// <returns>true if all tests pass,false otherwise</returns> /// <remarks>Testing will terminate on the first error found.</remarks> public bool TestArchive(bool testData) { return TestArchive(testData,TestStrategy.FindFirstError,null); } 用法示例: ZipFile zipFile = new ZipFile("archive.zip"); Console.WriteLine("Archive validation result: {0}",zipFile.TestArchive(true)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |