asp.net Server.MapPath 메서드 고려 사항 1/2페이지

2663 단어
고객 홍보 시스템을 만들 때 그 안에 템플릿 관리 모듈이 하나 있는데 관리자가 템플릿을 추가해야 한다. 템플릿의 이름, 설명과 미리 보기 그림 등을 포함한다. 여기서 사진을 올리는 기능은 비교적 전통적인 방법을 사용해서 올렸는데 테스트에 문제가 없었다.그러나 내가 발표한 후에 그림을 저장하는 폴더에 가상 디렉터리를 만들고 이 디렉터리에 쓰기 권한을 부여했지만 그림을 올릴 때 항상 실패했다.이전에 이런 상황을 만난 적이 없어서 매우 이상하다고 생각해서 어떻게든 해결하려고 한다.
우선, 업로드 디렉터리의 권한을 확인하십시오. NetWork 서비스 사용자의 쓰기, 수정 권한을 추가했지만, 결과는 실패했습니다. 그리고 권한을 EveryOne으로 설정했는지, 실패했는지 확인하십시오. 권한의 문제가 아닌 것 같습니다.
그런 다음 가상 디렉터리를 삭제하고 응용 프로그램 디렉터리에 그림을 저장하는 폴더(발표 전에 삭제)를 다시 만들고 쓰기 권한을 부여한 결과 업로드에 성공하고 정상적으로 표시될 수 있습니다.
이어서, 나는 업로드한 그림copy를 원래 만들어진 가상 디렉터리 아래에 다시 만들고, 가상 디렉터리를 다시 만들었는데, 결과는 성공적이었다.
이러한 검사와 구상 작업을 통해 저는 파일을 정말 올릴 수 있고 정상적으로 표시할 수 있다는 것을 정리했습니다. 업로드할 때의 디렉터리와 가상 디렉터리 간의 전환에 문제가 생긴 것 같습니다. 그리고 저는 제가 쓴 코드를 계속 심사했습니다.
현재 간략한 코드입니다. 그 중에서 Upload는 그림의 저장 디렉터리이고 가상 디렉터리를 만드는 곳입니다. Spread는 상위 디렉터리입니다.나는 갑자기 알고 보니 Server였다.Mappath는 그림이 저장된 루트 디렉터리를 가리키지 않아서 이상한 느낌이 들어서 수정했습니다.
 
  
string fullName = this.FileUpload2.PostedFile.FileName;
string type = fullName.Substring(fullName.LastIndexOf('.') + 1);
if (!PhotoTypes.IsExist(type.ToLower()))
{
Bmc.CLUtility.ShowMessage(this.Page, " JPEG、JPE、GIF、BMP、PNG !");
return;
}
string fileName ="Upload/"+ System.DateTime.Now.ToString("yyMMddhhmmss") + "." + type;
try
{
string temp = Server.MapPath("~/Spread");
this.FileUpload2.PostedFile.SaveAs(temp + "/" + fileName);
this.Image2.ImageUrl = "~/Spread/" + fileName;
this.Image2.Visible = true;
}
catch
{
Bmc.CLUtility.ShowMessage(this.Page, " !");
}

수정된 코드는 다음과 같습니다. 결과는 정상적으로 업로드되고 표시될 수 있습니다. 문제가 여기에 있는 것 같습니다.
 
  
string fullName = this.FileUpload2.PostedFile.FileName;
string type = fullName.Substring(fullName.LastIndexOf('.') + 1);
if (!PhotoTypes.IsExist(type.ToLower()))
{
Bmc.CLUtility.ShowMessage(this.Page, " JPEG、JPE、GIF、BMP、PNG !");
return;
}
string fileName = System.DateTime.Now.ToString("yyMMddhhmmss") + "." + type;
try
{
string temp = Server.MapPath("~/Spread/Upload");
this.FileUpload2.PostedFile.SaveAs(temp + "/" + fileName);
this.Image2.ImageUrl = "~/Spread/Upload/" + fileName;
this.Image2.Visible = true;
}
catch
{
Bmc.CLUtility.ShowMessage(this.Page, " !");
}

1 2 다음 페이지 전체 텍스트 읽기

좋은 웹페이지 즐겨찾기