C#根据文件流判断文件类型

判断文件真实的类型,不是通过扩展名来判断:

         /// <summary>
        /// 判断文件格式
        /// http://www.cnblogs.com/babycool
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static bool IsAllowedExtension(string filePath)
        {

            FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            BinaryReader reader = new BinaryReader(stream);
            string fileclass = "";
           // byte buffer;
            try
            {

                //buffer = reader.ReadByte();
                //fileclass = buffer.ToString();
                //buffer = reader.ReadByte();
                //fileclass += buffer.ToString();

                for (int i = 0; i < 2; i++)
                {
                    fileclass += reader.ReadByte().ToString();
                }

            }
            catch (Exception)
            {

                throw;
            }

            if (fileclass == "255216")
            {
                return true;
            }
            else
            {
                return false;
            }

            /*文件扩展名说明
             * 255216 jpg
             * 208207 doc xls ppt wps
             * 8075 docx pptx xlsx zip
             * 5150 txt
             * 8297 rar
             * 7790 exe
             * 3780 pdf
             *
             * 4946/104116 txt
             * 7173        gif
             * 255216      jpg
             * 13780       png
             * 6677        bmp
             * 239187      txt,aspx,asp,sql
             * 208207      xls.doc.ppt
             * 6063        xml
             * 6033        htm,html
             * 4742        js
             * 8075        xlsx,zip,pptx,mmap,zip
             * 8297        rar
             * 01          accdb,mdb
             * 7790        exe,dll
             * 5666        psd
             * 255254      rdp
             * 10056       bt种子
             * 64101       bat
             * 4059        sgf
             */

        }

相关:

ASP.net判断上传文件类型的三种方法

原文链接:http://www.cnblogs.com/babycool/p/3531696.html

时间: 2024-11-04 11:01:40

C#根据文件流判断文件类型的相关文章

java根据文件流判断文件类型(后缀名)

import java.io.FileInputStream; public class FileType{ public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) {

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

ifstream?流?判断文件是否结尾的函数eof(.xml

pre{ line-height:1; color:#800080; font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;} .selfFuc{color:#800080;} .bool{color:#d2576f;} .condition{color:#000080;font-weight:bold;} .key{color:#000080;} .var{color:#800000;font-sty

转载 - C++ - 关于ifstream/fstream流 判断文件是否结束eof()的问题

出处:http://blog.csdn.net/shuilan0066/article/details/4669451 在做实验的时候遇到这个问题,找原因的时候发现出处除了讲明原因,还举了例子,所以记下来. 其实在循环判断文件是否结束的时候可以直接就流输入放在循环条件那里,但是这里补充使用eof()的一些细节问题.其实这是关于到底什么时候标志位才会变化的问题.总结起来就是只有使用一次流变量来输入输出,标志位才会更新一次. 正文: fstream流的eof()  判断有点不合常理 按正常逻辑来说,

c# 根据文件流查看文件真实格式

今天在做图片注册的功能的时候,测试提出一个问题:将随便一个非图片文件将后缀名改为jpg或其他,上传时应检验图片合法性.然后同事给提供了根据文件流前两个字节判断文件真实格式的思路,代码如下: public static FileExtension CheckFileType(string fileName) { FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); System.IO.BinaryRead

springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux

1 //我的会员中心 头像上传接口 2 /*windows 调试*/ 3 @Value("${appImg.location}") 4 private String winPathPic; 5 /*linux 使用*/ 6 @Value("${img.location}") 7 private String linuxPathPic; 8 9 @PostMapping(value = "/file") 10 public String file(

第十四周阅读程序2:运用文件流进行文件的复制

问题及代码: #include <iostream> #include <fstream> using namespace std; int main() { ifstream readFile; //定义文件流类 ofstream writeFile; char ch; readFile.open("a.txt", ios::in); //以输入方式打开文件 a.txt writeFile.open("b.txt", ios::out);

使用文件流下载文件,并且修改文件的名字

最近在搞一个项目,里面有一个文件下载的内容,但是万恶的产品提了一个要自定义修改文件名的需求,一开始后台不想改,让前端修改(这简直是不可理喻,最后还是后台改了),不过经过努力,我还是找到了方法去解决. 这里使用的是文件流的方式,就是先把文件从服务器下载下来,前端再通过blob去修改文件名. 代码如下: fetch('/api/fs/download2/internal/' + item.att[0].url).then(res => res.blob().then(blob => { let a

[Go] 写文件和判断文件是否存在

OpenFile得到一个File,然后调用它的Write,参数是字节切片Stat看看返回错误没有 package main import ( "fmt" "os" ) func main() { file := "1.txt" f, _ := os.OpenFile(file, os.O_RDWR|os.O_CREATE, 0766) f.Write([]byte("你好")) f.Close() //判断文件是否存在 _,