c# - 如何检查文档是否为有效的 PDF 文档

标签 c# asp.net file-upload upload

我正在创建一个应用程序,其中用户在服务器上上传不同类型的文档。我正在验证不同类型的文档,如 jpeg、jpg、PNG、TIF、TIFF、GIF、BMP、ICO。

 Dictionary<string, byte[]> imageHeader = new Dictionary<string, byte[]>();
    imageHeader.Add("JPG", new byte[] { 0xFF, 0xD8, 0xFF, 0xE0 });
    imageHeader.Add("JPEG", new byte[] { 0xFF, 0xD8, 0xFF, 0xE0 });
    imageHeader.Add("PNG", new byte[] { 0x89, 0x50, 0x4E, 0x47 });
    imageHeader.Add("TIF", new byte[] { 0x49, 0x49, 0x2A, 0x00 });
    imageHeader.Add("TIFF", new byte[] { 0x49, 0x49, 0x2A, 0x00 });
    imageHeader.Add("GIF", new byte[] { 0x47, 0x49, 0x46, 0x38 });
    imageHeader.Add("BMP", new byte[] { 0x42, 0x4D });
    imageHeader.Add("ICO", new byte[] { 0x00, 0x00, 0x01, 0x00 });

我也想为 pdf、docx、excel、PPT 做同样的事情。请帮我找到这些文件的十六进制代码。

如果有人试图上传无效文档,我还想验证损坏的文档。

最佳答案

libmagic是这类东西的图书馆。它位于现代 Unix 系统中的 file 命令后面。您可以通过 FFI/绑定(bind)使用它,也可以只查看它们的 magic number database .

关于c# - 如何检查文档是否为有效的 PDF 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28671042/

相关文章:

azure - 将同一文件同时上传到 Azure Blob 存储

javascript - 如何在上传图片后更改 DIV 的背景?

c# - 如何将查询字符串转换为 json 字符串?

c# - SQL 时间戳到 C# 上的日期时间

c# - 我可以将 Visual Studio 设置为卸载所有项目,而不是选择 1 个项目并仅递归加载其依赖项吗?

javascript - 内联 Javascript 移至外部文件时出错 - 如何解决此问题?

c# - 在哪里设置 MVC 注册链接过期设置?

jquery - 如何在 jQuery 文件上传中上传所有文件时在服务器端使用停止事件

python - flask 在哪里寻找图像文件?

c# - NHibernate 平等 : How do I ensure only one row is persisted from many "equal" . NET 对象?