繁体   English   中英

验证Excel文件上传

[英]validating excel file upload

请帮助我验证excel文件上传。 我已经完成了用于上传excel文件的编码,并且我想验证该文件是否真的是excel。 我还通过重命名x.exe文件(如x.exe.xls)进行了检查,也通过将服务器端检查作为给定的方法进行了检查,但失败了。 我的要求是仅上传有效的excel文件,而不上传任何其他文件(如.exe,.dll或exe文件被篡改为x.exe.xls等),如前所述。

if (fileUpload.PostedFile.ContentType == "application/vnd.ms-excel" ||

  fileUpload.PostedFile.ContentType == "application/excel" ||  

  fileUpload.PostedFile.ContentType == "application/x-msexcel" ||

 fileUpload.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" //this is xlsx format ) 

我以前用过的东西:

    using System.Data.OleDb;

    public bool ValidateExcelFile(string fileName)
    {
        string connString = string.Format("Provider=Microsoft.Jet.OleDb.4.0; data source={0}; Extended Properties=\"Excel 8.0;HDR=Yes\"", fileName);
        OleDbConnection connection = null;
        try
        {
            connection = new OleDbConnection(connString);
            connection.Open();
            connection.Close();
            return true;
        }
        catch
        {
            return false;
        }
    }

如果文件不是实际的Excel格式,则将返回false。

正如Ray所说,您必须检查上传文件的魔术字节。 但这会花费很多(计算时间)

所以我建议先检查一下文件名和ContentType是否正确

请注意,这将不允许您拒绝在文件中间进行修改的文件(保持魔术字节完好无损...)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM