ASP.NET文件操作帮助类

public class FileHepler

{

    /// <summary>

    /// 上传一个文件

    /// </summary>

    /// <param name="key"></param>

    /// <returns></returns>

    public static FileModel RequestFile(string key,bool isUsed = false)

    {

        HttpPostedFile file = HttpContext.Current.Request.Files[key];

        if(isUsed)

        {

            return GetFileModel1(file);

        }

        return GetFileModel(file);

    }

    public static FileModel SaveFile(string key, string saveUrl,bool isChange=falsebool isUsed = false)

    {

        HttpPostedFile file = HttpContext.Current.Request.Files[key];

        FileModel model = new FileModel();

        try

        {  

            if(isChange)

            {

                saveUrl = saveUrl + file.FileName;

            }

            else

            {

                if (Path.GetExtension(file.FileName) != Path.GetExtension(saveUrl))

                {

                    saveUrl = saveUrl.Replace(Path.GetExtension(saveUrl), Path.GetExtension(file.FileName));

                }

            }

            string url = HttpContext.Current.Request.MapPath(saveUrl);

            file.SaveAs(url);

            if (isUsed)

            {

                model = GetFileModel1(file);

            }

            else

            {

                model = GetFileModel(file);

            }

            model.FileOldUrl = saveUrl;

            model.FileUrl = url;

        }

        catch (Exception ex)

        {

            model.Flag = false;

            model.Result = ex.Message;

        }

        return model;

    }

    public static FileModel SaveFirstFile(string saveUrl, bool isChange = falsebool isUsed = false)

    {

        HttpPostedFile file = HttpContext.Current.Request.Files[0];

        FileModel model = new FileModel();

        try

        {

            if (isChange)

            {

                saveUrl = saveUrl + file.FileName;

            }

            else

            {

                if (Path.GetExtension(file.FileName) != Path.GetExtension(saveUrl))

                {

                    saveUrl = saveUrl.Replace(Path.GetExtension(saveUrl), Path.GetExtension(file.FileName));

                }

            }

            string url = HttpContext.Current.Request.MapPath(saveUrl);

            file.SaveAs(url);

            if (isUsed)

            {

                model = GetFileModel1(file);

            }

            else

            {

                model = GetFileModel(file);

            }

            model.FileOldUrl = saveUrl;

            model.FileUrl = url;

        }

        catch (Exception ex)

        {

            model.Flag = false;

            model.Result = ex.Message;

        }

        return model;

    }

    public static FileModel SaveFile(HttpPostedFile _file,string saveUrl, bool isChange = falsebool isUsed = false)

    {

        HttpPostedFile file = _file;

        FileModel model = new FileModel();

        try

        {

            if (isChange)

            {

                saveUrl = saveUrl + file.FileName;

            }

            else

            {

                if (Path.GetExtension(file.FileName) != Path.GetExtension(saveUrl))

                {

                    saveUrl = saveUrl.Replace(Path.GetExtension(saveUrl), Path.GetExtension(file.FileName));

                }

            }

            string url = HttpContext.Current.Request.MapPath(saveUrl);

            file.SaveAs(url);

            if (isUsed)

            {

                model = GetFileModel1(file);

            }

            else

            {

                model = GetFileModel(file);

            }

            model.FileOldUrl = saveUrl;

            model.FileUrl = url;

        }

        catch (Exception ex)

        {

            model.Flag = false;

            model.Result = ex.Message;

        }

        return model;

    }

    public static List<FileModel> SaveFileList(int fileNum, string saveUrl, bool isChange = falsebool isUsed = false)

    {

        List<FileModel> filelist = new List<FileModel>();

        for (int i = 0; i < fileNum; i++)

        {

            HttpPostedFile file = HttpContext.Current.Request.Files[i];

            FileModel model = new FileModel();

            try

            {

                if (isChange)

                {

                    saveUrl = saveUrl + file.FileName;

                }

                else

                {

                    if (Path.GetExtension(file.FileName) != Path.GetExtension(saveUrl))

                    {

                        saveUrl = saveUrl.Replace(Path.GetExtension(saveUrl), Path.GetExtension(file.FileName));

                    }

                }

                string url = HttpContext.Current.Request.MapPath(saveUrl);

                file.SaveAs(url);

                if (isUsed)

                {

                    model = GetFileModel1(file);

                }

                else

                {

                    model = GetFileModel(file);

                }

                model.FileOldUrl = saveUrl;

                model.FileUrl = url;

            }

            catch (Exception ex)

            {

                model.Flag = false;

                model.Result = ex.Message;

            }

            filelist.Add(model);

        }

        return filelist;

    }

    /// <summary>

    /// 上传多个文件,通过文件索引获取

    /// </summary>

    /// <param name="fileNum"></param>

    /// <returns></returns>

    public static List<FileModel> RequestFileList(int fileNum, bool isUsed = false)

    {

        List<FileModel> filelist = new List<FileModel>();

        for (int i = 0; i < fileNum; i++)

        {

            HttpPostedFile file = HttpContext.Current.Request.Files[i];

            if (file != null)

            {

                FileModel model = new FileModel();

                if (isUsed)

                {

                    model = GetFileModel1(file);

                }

                else

                {

                    model = GetFileModel(file);

                }        

                filelist.Add(model);

            }

        }

        return filelist;

    }

    public static List<FileModel> RequestFileList2(int fileNum, bool isUsed = false)

    {

        List<FileModel> filelist = new List<FileModel>();

        for (int i = 0; i < fileNum; i++)

        {

            HttpPostedFile file = HttpContext.Current.Request.Files[i];

            if (file != null)

            {

                FileModel model = new FileModel();

                if (isUsed)

                {

                    model = GetFileModel1(file);

                }

                else

                {

                    model = GetFileModel(file);

                }

                filelist.Add(model);

            }

            else

            {

                break;

            }

        }

        return filelist;

    }

    public static FileModel RequestFirstFile(bool isUsed = false)

    {

        FileModel model = new FileModel();

        HttpPostedFile file = HttpContext.Current.Request.Files[0];

        if (file != null)

        {

            if (isUsed)

            {

                model = GetFileModel1(file);

            }

            else

            {

                model = GetFileModel(file);

            }     

        }

        return model;

    }

    public static FileModel GetFileModel(HttpPostedFile file)

    {

        FileModel model = new FileModel();

        model.FileName = file.FileName;

        model.FileSingleName = Path.GetFileNameWithoutExtension(file.FileName);

        model.FileExt = Path.GetExtension(file.FileName).Replace(".""");

        model.FileSize = file.ContentLength;

        model.FileStream = file.InputStream;

        model.NewFile = file;

        if (file == null)

        {

            return null;

        }

        int FileLen;

        FileLen = file.ContentLength;

        System.IO.Stream MyStream;

        byte[] bytes = new byte[FileLen];

        MyStream = file.InputStream;

        MyStream.Read(bytes, 0, FileLen);

        MyStream.Close();

        MyStream.Dispose();

        model.FileByte = bytes;

        return model;

    }

    public static FileModel GetFileModel1(HttpPostedFile file)

    {

        FileModel model = new FileModel();

        model.FileName = file.FileName;

        model.FileSingleName = Path.GetFileNameWithoutExtension(file.FileName);

        model.FileExt = Path.GetExtension(file.FileName).Replace(".""");

        model.FileSize = file.ContentLength;

        model.FileStream = file.InputStream;

        model.NewFile = file;

        if (file == null)

        {

            return null;

        }

        int FileLen;

        FileLen = file.ContentLength;

        System.IO.Stream MyStream;

        byte[] bytes = new byte[FileLen];

        MyStream = file.InputStream;

        MyStream.Read(bytes, 0, FileLen);

        model.NewStream = MyStream;

        model.FileByte = bytes;

        return model;

    }

    public static DataTable GetExcelDatatable(string fileUrl)

    {

        //office2007之前 仅支持.xls

        //const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';";

        //支持.xls和.xlsx,即包括office2010等版本的   HDR=No代表第一行是标题,不是数据;Yes为数据

        string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";

        // string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;IMEX=1'";

        DataTable dt = null;

        //建立连接

        OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));

        //打开连接

        if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)

        {

            conn.Open();

        }

        //获取所有的sheet的名称 即多个表格数据

        DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        //获取Excel的第一个Sheet名称

        string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();

        //查询sheet中的数据

        string strSql = "select * from [" + sheetName + "]";

        OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);

        DataSet ds = new DataSet();

        da.Fill(ds);

        dt = ds.Tables[0];

        da.Dispose();//释放资源 以免影响后面对excel操作

        dt.Dispose();

        ds.Dispose();

        return dt;

    }

    public static DataTable GetExcelDatatable1(string fileUrl)

    {

        //office2007之前 仅支持.xls

        //const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';";

        //支持.xls和.xlsx,即包括office2010等版本的   HDR=No代表第一行是标题,不是数据;Yes为数据

        string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=No; IMEX=1'";

        // string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;IMEX=1'";

        DataTable dt = null;

        //建立连接

        OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));

        //打开连接

        if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)

        {

            conn.Open();

        }

        //获取所有的sheet的名称 即多个表格数据

        DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        //获取Excel的第一个Sheet名称

        string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();

        //查询sheet中的数据

        string strSql = "select * from [" + sheetName + "]";

        OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);

        DataSet ds = new DataSet();

        da.Fill(ds);

        dt = ds.Tables[0];

        da.Dispose();//释放资源 以免影响后面对excel操作

        dt.Dispose();

        ds.Dispose();

        return dt;

    }

    public static DataSet GetExcelDataSet(string fileUrl)

    {

        //office2007之前 仅支持.xls

        //const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';";

        //支持.xls和.xlsx,即包括office2010等版本的   HDR=No代表第一行是标题,不是数据;Yes为数据

        string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";

        // string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;IMEX=1'";

        DataSet fileds = null;

        //建立连接

        OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));

        //打开连接

        if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)

        {

            conn.Open();

        }

        //获取所有的sheet的名称 即多个表格数据

        DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        for (int i = 0; i < schemaTable.Rows.Count; i++)

        {

            //获取Excel的第一个Sheet名称

            string sheetName = schemaTable.Rows[i]["TABLE_NAME"].ToString().Trim();

            //查询sheet中的数据

            string strSql = "select * from [" + sheetName + "]";

            OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);

            DataSet ds = new DataSet();

            da.Fill(ds);   

            fileds.Tables.Add(ds.Tables[0]);

            da.Dispose();//释放资源 以免影响后面对excel操作

            fileds.Dispose();

            ds.Dispose();

        }

        return fileds;

    }

    public static DataSet GetExcelDataSet1(string fileUrl)

    {

        //office2007之前 仅支持.xls

        //const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';";

        //支持.xls和.xlsx,即包括office2010等版本的   HDR=No代表第一行是标题,不是数据;Yes为数据

        string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=No; IMEX=1'";

        // string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;IMEX=1'";

        DataSet fileds = null;

        //建立连接

        OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));

        //打开连接

        if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)

        {

            conn.Open();

        }

        //获取所有的sheet的名称 即多个表格数据

        DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        for (int i = 0; i < schemaTable.Rows.Count; i++)

        {

            //获取Excel的第一个Sheet名称

            string sheetName = schemaTable.Rows[i]["TABLE_NAME"].ToString().Trim();

            //查询sheet中的数据

            string strSql = "select * from [" + sheetName + "]";

            OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);

            DataSet ds = new DataSet();

            da.Fill(ds);

            fileds.Tables.Add(ds.Tables[0]);

            da.Dispose();//释放资源 以免影响后面对excel操作

            fileds.Dispose();

            ds.Dispose();

        }

        return fileds;

    }

}

public class FileModel

{

    public byte[] FileByte { getset; }

    public string FileName { getset; }

    public string FileSingleName { getset; }

    public string FileExt { getset; }

    public long FileSize { getset; }

    public Stream FileStream { getset; }

    public Stream NewStream { getset; }

    public bool Flag { getset; } = true;

    public string Result { getset; }

    public string FileUrl { getset; }

    public string FileOldUrl { getset; }

    public HttpPostedFile NewFile { getset; }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值