微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取zip文件中文件的MIME类型而不将其提取并保存到服务器上?

如何解决如何获取zip文件中文件的MIME类型而不将其提取并保存到服务器上?

在ASP.NET Core 2.2应用程序中,我可以上传ZIP文件。 ZIP文件内容提取并保存在目录中。但是,在将文件保存到服务器上之前,我想检查它们的MIME类型(也就是内容类型),以确保它们都不是要存储的潜在危险文件,例如EXE。如果ZIP文件包含不需要的文件,我只想在页面显示模型错误

在将ZIP文件存储在目录中之后,我试图遍历zip文件中的文件以检查其MIME类型。使用此方法,虽然我可以看到带有扩展名的文件名,但看不到MIME类型。单独使用扩展名不是一个好主意,因为它可以被欺骗。

Directory.GetFiles(directory,"*.zip",SearchOption.TopDirectoryOnly).ToList()
    .ForEach(zipFilePath =>
    {
        using (FileStream zipToOpen = new FileStream(zipFilePath,FileMode.Open))
        {
            using (ZipArchive archive = new ZipArchive(zipToOpen,ZipArchiveMode.Read))
            {
                foreach (ZipArchiveEntry entry in archive.Entries)
                {
                    //entry does not contain MIME type,only filename with extension
                }
            }
        }
    });

另一种解决方案是将文件夹的权限设置为拒绝执行,但我不想这样做,因为这很容易忘记。

最后,有一种方法可以将文件存储在App_Data文件夹中,该文件夹不公开,因此无法直接执行其中的文件。问题是我找不到这样的文件夹。它似乎不是使用我的应用程序自动创建的。我认为这一定是ASP.NET和ASP.NET Core之间的区别。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。