728x90
반응형
1. 원하는 업로드 파일 개수와, 확장자가 정해져 있을 경우 아래 함수 호출하여 에러 메시지를 return 받을 수 있다.
public string CheckValidFile(HttpFileCollectionBase files, int count, string fileTypes)
{
int fileCount = 0;
string[] fileType = fileTypes.Split(',').ToArray();
foreach (string fileName in files)
{
foreach (string file in fileType) {
HttpPostedFileBase fileBase = files[fileName];
if (fileBase.ContentLength == 0) continue;
if (fileBase.ContentType == file)
fileCount++;
}
}
if (fileCount == 0)
return "pdf/jpg/png 형식의 파일을 첨부해주세요!";
if (fileCount != count)
return count.ToString() + "개만 첨부해주세요!";
return "";
}
호출 소스
var msg = globalfileuploader.CheckValidFile(Request.Files, 1, "application/pdf,image/png,image/jpg,image/jpeg");
if (msg != "")
{
return Json(new { ErrorMessage = msg }, JsonRequestBehavior.AllowGet);
}
2. 파일 업로드 시, 보안에 위협이 되는 파일 확장자를 필터링 할 수 있다.
private bool CheckValidFile(HttpFileCollectionBase files)
{
bool isValid = true;
string[] badFileType = "asp,asa,aspx,html,htm,hta,htr,cdx,cer,jsp,php".Split(',').ToArray();
foreach (string fileName in files)
{
HttpPostedFileBase fileBase = files[fileName];
if (fileBase.ContentLength == 0) continue;
string fileNameExtension = Path.GetExtension(fileBase.FileName).Replace(".", "");
if (badFileType.Contains(fileNameExtension, StringComparer.OrdinalIgnoreCase))
isValid = false;
}
return isValid;
}
호출 소스
if (CheckValidFile(files))
{
//업로드 소스 구현
}
728x90
반응형
'C#' 카테고리의 다른 글
네이버 스마트에디터] 이미지파일 업로드시 Base64인코딩 태그로 수정 (0) | 2021.09.06 |
---|---|
C#] JWT, JSON Web Token 사용법 (0) | 2020.10.23 |
C#] AES128, AES256 암호화 복호화 코드 (0) | 2020.10.16 |
C#] XSS(Cross-site Scripting) - 스크립트 필터링 (0) | 2020.10.06 |
C#] 개인정보 마스킹 : 이름, 주소, 휴대폰번호 (0) | 2020.10.06 |
댓글