验证excel文件上传

时间:2013-11-20 16:22:11

标签: c# javascript excel file-upload

请帮我验证excel文件上传。我已经完成了上传excel文件的编码,我想验证文件是否真的是excel。我还通过将服务器端检查重命名为x.exe.xls来检查x.exe文件,但是它失败了。我的要求是只上传有效的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 ) 

2 个答案:

答案 0 :(得分:0)

我以前用过的东西:

    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。

答案 1 :(得分:-1)

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

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

请注意,这不允许您拒绝在文件中间修改过的文件(保持魔术字节不变......)。