我正在从文件中加载图像,我想知道在从文件中完全读取图像之前如何验证图像.
string filePath = "image.jpg";
Image newImage = Image.FromFile(filePath);
Run Code Online (Sandbox Code Playgroud)
当image.jpg不是真正的jpg时会出现问题.例如,如果我创建一个空文本文件并将其重命名为image.jpg,则在加载image.jpg时将抛出OutOfMemory Exception.
我正在寻找一个功能,它将在给定图像的流或文件路径的情况下验证图像.
示例函数原型
bool IsValidImage(string fileName);
bool IsValidImage(Stream imageStream);
Run Code Online (Sandbox Code Playgroud) 我循环遍历目录并复制所有文件.现在我做string.EndsWith检查".jpg"或".png"等..
有没有更优雅的方法来确定文件是否是一个图像(任何图像类型)没有上面的hacky检查?
通过Windows DLL可访问的FindMimeFromData方法Urlmon.dll能够确定存储在内存中的给定数据的MIME类型,考虑到存储此类数据的字节数组的前256个字节.
然而,在阅读了它的文档后,我在Windows Internet Explorer中引领了MIME类型检测,在那里我可以找到此方法能够识别的MIME类型.见清单.如您所见,此方法仅限于26种MIME类型.
所以我想知道是否有人能指出我有更多MIME类型的另一种方法,或者另外一种方法/类我可以包含我认为合适的MIME类型.
谢谢.
以前我使用PHP。然后我得到了一个基于 C# 的项目,但我不知道该怎么做。即使我试图打印一些东西,但它总是错误构建。
下面是(我想,因为我在Controller目录下找到了这个文件)上传文件控制器,我想限制这样只能上传图像。任何人都可以帮忙吗?
public IActionResult UploadFile ([FromForm] IFormFile file, [FromForm] string fileName) {
return Ok (new {
id = _fileService.UploadFile (fileName, file),
fileName = file.FileName,
fileSize = file.Length,
fileType = file.ContentType,
file = file
});
}
Run Code Online (Sandbox Code Playgroud)