我有一个在 Azure 上运行的巴西网站(c# .NET 5.0 Razor Pages),我有一个页面可以上传用户的 01 个人资料照片。当我从笔记本上传照片时,代码运行良好,但是当我从手机上传照片时,我遇到了问题。有时我可以上传自拍,但不能上传保存在图库中的文件,有时上传失败。代码如下:
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
// Person Photo
foreach (var file in Request.Form.Files)
{
if (file.Name == "ClsMatchPerfil.Cpo004")
{
try
{
using Bitmap bmp1 = new(file.OpenReadStream());
ImageCodecInfo jpgEncoder = ImageCodecInfo.GetImageEncoders().First(enc => enc.FormatID == ImageFormat.Jpeg.Guid);
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new(1);
EncoderParameter myEncoderParameter = new(myEncoder, 60L);
myEncoderParameters.Param[0] = myEncoderParameter;
MemoryStream MS = new();
bmp1.Save(MS, jpgEncoder, myEncoderParameters);
if (MS.Length <= 2048000)
{
ClsMatchPerfil.Cpo004 = MS.ToArray();
}
else
{
M = 1;
return RedirectToPage("./Create");
}
MS.Close();
MS.Dispose();
}
catch
{
M = 2;
return RedirectToPage("./Create");
}
}
}
_context.ClsMatchPerfil.Add(ClsMatchPerfil);
await _context.SaveChangesAsync();
return RedirectToPage("/Person/PanelPerson");
}
HTML如下:
<form method="post" enctype="multipart/form-data">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<input asp-for="ClsMatchPerfil.Cpo002" class="form-control" value="@Model.PersonEmail" type="hidden" />
<span asp-validation-for="ClsMatchPerfil.Cpo002" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ClsMatchPerfil.Cpo003" class="control-label">Nome (<small>até 20 caracteres</small>):</label>
<input asp-for="ClsMatchPerfil.Cpo003" class="form-control" />
<span asp-validation-for="ClsMatchPerfil.Cpo003" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ClsMatchPerfil.Cpo004" class="control-label">Foto (<small>quadrada, até 2 MB</small>):</label>
<input asp-for="ClsMatchPerfil.Cpo004" class="form-control" type="file" accept=".jpg, .jpeg, .png;" required />
<span asp-validation-for="ClsMatchPerfil.Cpo004" class="text-danger"></span>
</div>
<div class="form-group text-right">
<input type="submit" value="Criar" class="btn btn-primary" />
</div>
</form>
我知道互联网质量可能是个问题,如果是真的,我该如何解决?或者我忘记了什么......提前谢谢你。