簡體   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