Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在从base64检查文件类型?_C#_File Upload_Base64 - Fatal编程技术网

C# 正在从base64检查文件类型?

C# 正在从base64检查文件类型?,c#,file-upload,base64,C#,File Upload,Base64,我有一个WCF REST服务,它具有以下OperationContract,可将文件保存在磁盘上: [OperationContract] [WebInvoke(UriTemplate = "FileSave", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyS

我有一个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字符串(=文件内容在操作合同中接收)

我想在将文件保存到磁盘之前检查文件类型。 我知道在代码复查堆栈交换上存在一些问题,但我不确定这是否是最好的方法。此外,我还测试了上传几个.txt文件,每个文件都有不同的前5个字符


我正在寻找一个代码片段,其中包括检查几种常见的文件类型。

试图通过检查文件内容来确定文件类型总是容易出错-您不知道所有可能的文件类型、文件头更改等

只需按浏览器中的任意一种方式进行操作-按mime类型: 在javascript中,通过HTML文件API(evt.dataTransfer.files[0].type)检查文件类型,然后将其作为JSON消息的一部分发送到服务器

或者按照windows的方式进行操作—使用文件扩展名。

检查此处的链接:

这“包括检查几种常见的文件类型”

//
///演示从base64字符串提取文件扩展名。
/// 
///base64字符串。
///从此,文件扩展名从字符串开始。
公共静态字符串GetFileExtension(字符串base64String)
{
var data=base64String.Substring(0,5);
开关(data.ToUpper())
{
“IVBOR”案:
返回“png”;
案例“/9J/4”:
返回“jpg”;
案例“AAAAF”:
返回“mp4”;
案例“JVBER”:
返回“pdf”;
“AAABA”案:
返回“ico”;
案例“UMFYI”:
返回“rar”;
案例“E1XYD”:
返回“rtf”;
案例“U1PKC”:
返回“txt”;
案例“MQOWM”:
案例“77U/M”:
返回“srt”;
违约:
返回字符串。空;
}
}

谢谢。我同意我的解决方案容易出错。我可以有几个javascript客户端(不仅仅是我的消费者应用程序)。因此,我不信任用户发送的mime类型或扩展。链接不再有效。我发现的一个链接可能有助于解决此问题:
/// <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;
 }
}