音频的 Base64 验证

Posted

技术标签:

【中文标题】音频的 Base64 验证【英文标题】:Base64 Validation For Audio 【发布时间】:2019-10-17 01:08:47 【问题描述】:

实际上,我想在 API 中接收 base64,但我想允许 base64 仅包含音频 下面是我验证 base64 的函数,但在 Convert.FromBase64String(base64String); 之前我想验证这个 base64是音频。

public static int CheckAudio(string base64String)
        

            if (string.IsNullOrEmpty(base64String) || base64String.Length % 4 != 0
               || base64String.Contains(" ") || base64String.Contains("\t") || base64String.Contains("\r") || base64String.Contains("\n"))
                return (int)ConfezzStatusCode.InValidParamter;

            try
            
                 Convert.FromBase64String(base64String);
                    return (int)HttpStatusCode.OK;
            
            catch
            
                // Handle the exception
                return (int)ConfezzStatusCode.InValidParamter;
            
        

注意:我只想允许音频文件。

【问题讨论】:

【参考方案1】:

您可以使用file signatures 来检测它是否是已知的音频格式。像这样的:

// Decode the whole string to make sure it is a valid Base64
byte[] data = Convert.FromBase64String(base64String);

// Just for readability store it as HEX
// You might want to store only the file header (eg, 64 bytes)
string hex = BitConverter.ToString(data);

if (hex.StartsWith("49-44-33"))

  Console.WriteLine("mp3");

else if (hex.StartsWith("66-4C-61-43"))

  Console.WriteLine("flac");

else 
  Console.WriteLine("unknown:" + hex);

更多想法请查看:

Using .NET, how can you find the mime type of a file based on the file signature not the extension In C#, how can I know the file type from a byte[]?

【讨论】:

以上是关于音频的 Base64 验证的主要内容,如果未能解决你的问题,请参考以下文章

音频base64和音频文件转换

如何将音频文件转为base64 编码

移动设备上的 HTML5 base64 编码音频

Google Speech API - 识别 base64 编码的音频

如何使用JS将音频文件如何转换成base64格式的

如何将base64音频数据解码为wav格式