c# - 将 .webp 重命名为 .jpg 时,Fromstream 流异常“参数无效”
问题描述
我使用以下代码将上传的图像保存到 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();
}
}
}
它工作正常,当客户端用户上传.webp
图像时,代码拒绝正确保存图像,但问题是当客户端手动将 a 重命名Image1.webp
为Image1.jpg
然后上传时,系统接受 .jpg 文件并继续但就using (var img = Image.FromStream(stream)
可以了通过并"parameter is not valid"
出现异常消息并且图像不保存。我不明白,如果重命名上传的图像不是 .jpg 那为什么它传递给保存代码,如果是 .jpg 为什么它不能被保存。
更多信息:即使我将文件重命名test.dll
为test.jpg
文件并上传,问题仍然存在。我需要代码来防止接受改名和假.jpg
的。
解决方案
推荐阅读
- r - 使用分隔符从原始向量创建几个新向量
- angular - 从 Angular 7 中的 .net 核心 API 检索 http 响应正文
- mysql - Laravel:hasManyThrough 关系获取多对多表值
- python - 我们如何在 Open CV 中创建一个轨迹栏,以便我可以使用它跳到视频的特定部分?
- php - 引导崩溃:显示一个隐藏另一个
- ssl - 如何通过 SSL/TLS 连接 Thingsboard 和 Thingsboard 物联网网关?
- php - 检查队列返回状态
- jakarta-ee - 如何在生产中禁用 swagger-ui(Thorntail)?
- ssl - Websphere trust.p12 vs cacert 存储
- if-statement - MultiWayIf 和经典守卫有什么区别?