Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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# Fromstream流异常";参数无效";将.webp重命名为.jpg时_C#_Asp.net Core - Fatal编程技术网

C# Fromstream流异常";参数无效";将.webp重命名为.jpg时

C# Fromstream流异常";参数无效";将.webp重命名为.jpg时,c#,asp.net-core,C#,Asp.net Core,我使用以下代码将上载的图像保存到ASP.Net Core 3.1 web应用程序中的wwwroot目录: var files = HttpContext.Request.Form.Files; int filesCount = files.Count; //Some codes here //Check for type of file: only jpg and png are accepted for (int i = 0; i < filesCount; i++) {

我使用以下代码将上载的图像保存到ASP.Net Core 3.1 web应用程序中的wwwroot目录:

 var files = HttpContext.Request.Form.Files;
 int filesCount = files.Count;

 //Some codes here
 //Check for type of file: only jpg and png are accepted
 for (int i = 0; i < filesCount; i++)
 {
     string extension = Path.GetExtension(files[i].FileName).ToLower();
     if (extension == ".jpg" || extension == ".png")       
      {//Some codes here}
 }

 //some codes here
 
 for (int i = 0; i < filesCount; i++)
 {
     using (var stream = files[i].OpenReadStream())
     {
         try
         {
            using (var img = Image.FromStream(stream))
           {
              img.ScaleAndCrop(500, 500)                  
              .SaveAs($"wwwroot\\images\\items\\" + fileName + i + ".jpg", 45);
           }
         }
         catch (Exception message)
         {
            string exceptionMessgae = message.ToString();
         }
     }
 }
var files=HttpContext.Request.Form.files;
int filescont=files.Count;
//这里有一些代码
//检查文件类型:仅接受jpg和png
对于(int i=0;i
它工作正常,当客户端用户上传
.webp
图像时,代码拒绝正确保存图像,但问题是当客户端手动将
Image1.webp
重命名为
Image1.jpg
然后上传时,系统接受.jpg文件并继续使用(var img=image.FromStream(stream))
它传递异常消息,并显示为“参数无效”且图像不保存。 我不明白,如果重命名后上传的图像不是.jpg,那么为什么它会传递到保存代码,如果是.jpg,为什么它不能保存


更多信息:即使我将
test.dll
文件重命名为
test.jpg
文件并将其上载,问题仍然存在。我需要代码来防止接受重命名和伪造的
.jpg

一个(真实)jpg文件的前三个字节是(十六进制)FF D8 FF

这也称为,用于:89 50 4e 47 0d 0a 1a 0a

GetMimeType仅使用扩展名(可能重命名)在内部数据库中查找mimetype(可能不完整)。Windows资源管理器也仅使用扩展名获取要显示的文件类型


要读取这个神奇的数字,您不必将整个文件读入字节数组,只需读入前几个字节。

前几个字节可能会将该文件识别为真实的jpg图像。请检查是否存在相同的
获取Mime类型
?如果没有,我将感谢获得一些关键字来找到答案。