簡體   English   中英

從base64檢查文​​件類型?

[英]Checking file type from base64?

我有一個 WCF REST 服務,其中包含以下 OperationContract 將文件保存在磁盤上:

[OperationContract]
[WebInvoke(UriTemplate = "FileSave", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
ResponseHandler FileSave(string fileName, string fileContent);

文件通過javascript發送 - 使用HTML File API => 二進制數據 => base-64 編碼的 ASCII 字符串(=fileContent 在操作合同中收到)

我想在將文件保存到磁盤之前檢查文件類型。 我知道Checking MIME Type from a base64 string on the Code Review Stack Exchange 但我不確定這是否是最好的方法。 另外,我測試了上傳幾個 .txt 文件,每個文件的前 5 個字符都不同。

我正在尋找一個代碼片段,其中包括檢查幾種常見的文件類型。

在此處檢查此鏈接:

https://web.archive.org/web/20170331115315/http://codeanalysis.com/2016/10/02/extracting-file-extension-base64-string/

這“將包括檢查幾種常見的文件類型”

/// <summary>
/// To demonstrate extraction of file extension from base64 string.
/// </summary>
/// <param name="base64String">base64 string.</param>
/// <returns>Henceforth file extension from string.</returns>
public static string GetFileExtension(string base64String)
{
var data = base64String.Substring(0, 5);

switch (data.ToUpper())
 {
     case "IVBOR":
        return "png";
     case "/9J/4":
         return "jpg";
     case "AAAAF":
         return "mp4";
     case "JVBER":
         return "pdf";
     case "AAABA":
         return "ico";
     case "UMFYI":
         return "rar";
     case "E1XYD":
         return "rtf";
     case "U1PKC":
        return "txt";
     case "MQOWM":
     case "77U/M":
        return "srt";
     default:
        return string.Empty;
 }
}

試圖通過檢查文件內容來確定文件類型總是容易出錯——您不知道所有可能的文件類型、文件頭更改等...

只需按照瀏覽器的方式進行操作 - 通過 mime 類型:在 javascript 中,通過 HTML 文件 API (evt.dataTransfer.files[0].type) 檢查文件類型,然后將其作為 JSON 消息的一部分發送到服務器

或者按照 Windows 的方式進行操作 - 通過文件擴展名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM