在 ASP.NET Core-6 Web API 應用程式中,我正在嘗試上傳多個檔案。我有這個代碼
檔案型別驗證
public static bool CheckIfPdfFile(IFormFile file)
{
var extension = "." file.FileName.Split('.')[file.FileName.Split('.').Length - 1];
return (extension == ".pdf");
}
public class AdminFileModel
{
public List<IFormFile> MyFile { get; set; }
}
模型:
public class MandateApprovalAttachment
{
public Guid Id { get; set; }
public string FileType { get; set; }
public string FileName { get; set; }
public string FilePath { get; set; }
public long? FileSize { get; set; }
public string MimeType { get; set; }
}
然后將執行操作的主要方法:
public async Task<Response<string>> MandateApproval(AdminFileModel model)
{
var response = new Response<string>();
string fileName = "";
try
{
if (model.MyFile == null || model.MyFile.Count == 0)
{
response.Data = null;
response.StatusCode = (int)HttpStatusCode.OK;
response.Message = "No File Available for Upload";
response.Successful = false;
return await Task.FromResult(response);
}
foreach (var attachment in model.MyFile)
{
if (ConstantHelper.CheckIfPdfFile(attachment))
{
MandateApprovalAttachment mandateAttachment = new MandateApprovalAttachment();
string uploadFolder = Path.Combine(_iWebHostEnvironment.WebRootPath, "files/my_attachments");
fileName = Guid.NewGuid().ToString() DateTime.Now.ToString("yyyyMMddHHmmss") "_" attachment.FileName;
string filePath = Path.Combine(uploadFolder, fileName);
//attachment.CopyTo(fileStream);
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
await attachment.CopyToAsync(fileStream);
}
mandateAttachment.FileType = Path.GetExtension(attachment.FileName);
mandateAttachment.MimeType = attachment.ContentType;
mandateAttachment.FileName = fileName;
mandateAttachment.FilePath = filePath;
await _unitOfWork.AdminMandateAttachments.InsertAsync(mandateAttachment);
await _unitOfWork.Save();
}
else
{
response.Data = null;
response.StatusCode = (int)HttpStatusCode.OK;
response.Message = "Invalid File Extension! Kindly attach PDF File";
response.Successful = false;
return response;
}
}
response.Message = "Successfully";
transaction.Complete();
response.StatusCode = (int)HttpStatusCode.OK;
response.Successful = true;
return response;
catch (Exception ex)
{
response.Message = "An error occured";
response.Successful = false;
response.StatusCode = (int)HttpStatusCode.BadRequest;
return response;
}
}
我已經驗證 FileType 應該只是 PDF,這是有效的。
但是現在,我如何驗證最大 FileSize 不應該超過 5MB,并將 FileSize 保存到資料庫中?
謝謝
uj5u.com熱心網友回復:
有一個IFormFile.Length
屬性,它將以位元組為單位回傳該檔案的長度。( https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.iformfile.length?view=aspnetcore-6.0 )
因此,這attachment
是一個IFormFile
,您可以通過檢查來驗證這一點
attachment.Length <= 5 * 1024 * 1024
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/525342.html