gpt4 book ai didi

c# - 从 base64 检查文件类型?

转载 作者:太空狗 更新时间:2023-10-30 00:31:39 25 4
gpt4 key购买 nike

我有一个 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 文件 API => 二进制数据 => base-64 编码的 ASCII 字符串(=文件内容在操作合约中接收)

我想在将文件保存到磁盘之前检查文件类型。我知道 Checking MIME Type from a base64 string在 Code Review Stack Exchange 上,但我不确定这是否是最好的方法。此外,我已经测试了上传几个 .txt 文件,每个文件的前 5 个字符都不同。

我正在寻找包含检查几种常见文件类型的代码片段。

最佳答案

在此处检查此链接:

https://web.archive.org/web/20170331115315/http://codeanalyse.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;
}
}

注意:如果您使用的是网络浏览器上传过程,字符串可能以 data:image/png;base64, 开头。这个应该先去掉。字符串的这一部分不能被信任用于网络上传,因为图书馆将根据扩展名而不是实际文件类型添加它。 IE。名为 accounts.xlsx.pdf 的 excel 文件将被标记为 PDF,而不是 xlsx。查看如上所示的内容是一种更可信的评估文件的方式。

关于c# - 从 base64 检查文件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com