सी # के लिए ICSharpCode.SharpZipLib का उपयोग करके, मैं कैसे सत्यापित कर सकता हूं कि फ़ाइल पास की जा रही है वास्तव में एक वैध ज़िप फ़ाइल है (ऐसा कुछ नहीं जिसे सही क्लिक किया गया है और .zip के नाम से बदला गया है)?ICSharpCode.SharpZipLib ज़िप फ़ाइल को सत्यापित करें
[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 });
}
बढ़िया है, यह वास्तव में मैं क्या देख रहा था: जब मैं तुरंत नाम बदलने का प्रयास किया यह मेरे लिए फाइल पर एक IOAccess त्रुटि बनाया, मैं एक का उपयोग कर बयान को जोड़ने के लिए किया था। – GoldenUser
धन्यवाद, यह वास्तव में साफ और सहायक उत्तर है! –
क्या यह पूरे संग्रह को सत्यापित करता है? मैं एक ~ 1GB पासवर्ड से सुरक्षित ज़िप फ़ाइल है कि मैं अपनी प्रविष्टियों के माध्यम से गणना करने में सक्षम हूँ लेकिन जब मैं निष्कर्षण प्रदर्शन यह ~ पर 56% दुर्घटनाओं की है। क्या मैं इसे निकालने से पहले बस इसका परीक्षण कर सकता हूं? – Adi