Razor Page IFormFile . net 5.0附件头验证



我使用。net 5.0 (Razor Pages)和IFormFile上传用户图像,在ASP。. NET我用来验证文件的头,以确保上传的文件是有效的,例如不要将EXE文件扩展名更改为Jpg并上传它,因此有任何帮助来验证IFormFile的头吗?

在ASP中使用的功能. NET:和我需要在Razor Pages中实现

public string validateFileToUpload(FileUpload objFile)
{
string errorMessageToReturn = string.Empty;
// DICTIONARY OF ALL IMAGE FILE HEADER
Dictionary<string, byte[]> imageHeader = new Dictionary<string, byte[]>();
imageHeader.Add("JPG", new byte[] { 0xFF, 0xD8, 0xFF, 0xE0 });
imageHeader.Add("JPEG", new byte[] { 0xFF, 0xD8, 0xFF, 0xE0 });
imageHeader.Add("PDF", new byte[] { 0x25, 0x50, 0x44, 0x46 });
imageHeader.Add("DOCX", new byte[] { 0x50, 0x4B, 0x03, 0x04 });
imageHeader.Add("DOC", new byte[] { 0xD0, 0xCF, 0x11, 0xE0 });
imageHeader.Add("MSG", new byte[] { 0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1 });
byte[] header;

string fileExt;
fileExt = objFile.FileName.Substring(objFile.FileName.LastIndexOf('.') + 1).ToUpper();

byte[] tmp;
try
{
tmp = imageHeader[fileExt];
header = new byte[tmp.Length];
}
catc
{
errorMessageToReturn = "Invalid File.";
return errorMessageToReturn;
}


objFile.FileContent.Read(header, 0, header.Length);
if (CompareArray(tmp, header))
{
errorMessageToReturn = string.Empty;
}
else
{
errorMessageToReturn = "Invalid ." + fileExt + " file.";

}
return errorMessageToReturn;
}
private bool CompareArray(byte[] a1, byte[] a2)
{
if (a1.Length != a2.Length)
return false;
for (int i = 0; i < a1.Length; i++)
{
if (a1[i] != a2[i])
return false;
}
return true;
}

使用下面的而不是objFile.FileContent来解决。Read(header, 0, header. length);

if (objFile.Length > 0)
{
using (var ms = new MemoryStream())
{
objFile.CopyTo(ms);
var fileBytes = ms.ToArray();
for (int i = 0; i < header.Length; i++)
{
header[i] = fileBytes[i];
}

}
}

相关内容

最新更新