检查上传文件的内容

时间:2010-04-22 06:47:24

标签: asp.net-mvc file-upload

我正在使用ASP.NEt MVC。我想上传.zip文件,我在我的视图上使用html输入文件上传控件。 我只想上传.zip文件。 我想检查一下我的.zip只包含两个文件 - 两个文件都有扩展名.txt,其中一个文件名为“start”。 任何人都可以建议我如何检查这个?我们怎样才能确保上传的.zip真的是一个压缩文件夹而不是任何其他只有.zip扩展名的文件。 我们可以使用HttpPostedFileBase.ContentType吗?

提前谢谢, KAPS

2 个答案:

答案 0 :(得分:0)

ContentType只是由客户端浏览器填写,因此您无法真正信任它。唯一的方法是尝试&解析服务器上的文件:使用SharpZipLib之类的东西打开.zip文件并确认其中有两个文件。

答案 1 :(得分:0)

您可以使用DotNetZip来确定文件是否为zip文件。你可以用dotnetzip做更多的事情。

您可以像这样验证

[HttpPost]
public ActionResult Index(FormItems item, HttpPostedFileBase files)
{
            //check for zip file
            try
            {
                ZipFile.CheckZip(files.FileName); //just pass the name of the file
            }
            catch
            {
                //not a zip file
            }

}

OR

[HttpPost]
public ActionResult Index(FormItems item, HttpPostedFileBase files)
{
            //check for zip file
            try
            {
                ZipFile.Read(files.InputStream); //read the zip contents by passing the input stream
            }
            catch
            {
                //not a zip file
            }

}

确保包含名称空间using Ionic.Zip;并添加对该dll的引用。

希望这有帮助