Sử dụng ICSharpCode.SharpZipLib cho C#, làm cách nào tôi có thể xác thực rằng tệp đang được chuyển thực sự là tệp zip hợp lệ (không phải cái gì đã được nhấp chuột phải và đổi tên thành .zip)?ICSharpCode.SharpZipLib xác thực tệp 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 });
}
Tuyệt vời, đây chính xác là những gì tôi đang tìm kiếm. – GoldenUser
Cảm ơn, đó là câu trả lời thực sự rõ ràng và hữu ích! –
điều này có xác minh toàn bộ lưu trữ không? Tôi có một tập tin zip được bảo vệ bằng mật khẩu ~ 1GB mà tôi có thể liệt kê thông qua các mục nhập của nó nhưng khi tôi thực hiện việc trích xuất nó bị lỗi ở ~ 56%. Tôi có thể thử nghiệm nó trước khi bắt đầu giải nén nó không? – Adi