2010-05-14 27 views
1

확인이 문제가있는 사람들을 보았습니다. 그러나 이미 상대 경로가 아닌 파일 경로를 사용하고 있습니다. 내 코드는 내 PC에서 잘 작동하지만 다른 개발자가 이미지를 업로드하면이 오류가 발생합니다. 난 그것이 폴더에 보안 권한 일 줄 알았지 만 시스템 계정은 폴더에 대한 모든 액세스 권한이 있습니다 (그러나 응용 프로그램이 실행중인 계정을 테스트하는 방법에 대해 혼란스러워 함). 또한 일반적으로 로컬로 실행하는 것은 종종 당신에게 제공하지 않습니다 너무 많은 보안 문제 :SaveAs 메서드가 루트 경로를 요구하도록 구성되어 있고 경로 <blah>이 루팅되지 않았습니다.

코드 조각

:

 Guid fileIdentifier = Guid.NewGuid(); 
     CurrentUserInfo currentUser = CMSContext.CurrentUser; 
     string identifier = currentUser.UserName.Replace(" ", "") + "_" + fileIdentifier.ToString(); 
     string fileName1 = System.IO.Path.GetFileName(fileUpload.PostedFile.FileName); 
     string Name = System.IO.Path.GetFileNameWithoutExtension(fileName1); 
     string renamedFile = fileName1.Replace(Name, identifier); 
     string path = ConfigurationManager.AppSettings["MemberPhotoRepository"]; 

     String filenameToWriteTo = path + currentUser.UserName.Replace(" ", "") + fileName1; 
     fileUpload.PostedFile.SaveAs(filenameToWriteTo); 

내 설정 설정 값은 다음과 같습니다

가 다시이 내 PC에 잘 작동 ! (그리고 나는 다른 사람이 자신의 PC에 폴더를 가지고 있는지 확인했다.)

모든 제안을 주시면 감사하겠습니다 - 감사합니다 :)

답변

0

문제가 무엇인지 확실하게 구분하지 않았습니다. 개발자가 아닌 PC에서 디버깅을 끝내지는 않았지만 잠재적 인 원인을 조사하는 동안 작업을 계속할 수있는 해결 방법이있었습니다. 어쩌면 그가 내 디렉토리의 복사본을 잡아서 사이트 또는 파일 권한을 수정/실행 한 것일 수도 있습니다.

적어도 필자는 실제 파일 경로가 필요하므로 희망을 갖고 다시 만나지 않을 것입니다.

0

가 분명히 무엇을 말하는 것은 그것이 상대 경로이며, 서버 구성 그렇게하지 않는, 즉 당신의 filenameToWriteTo가 뿌리 경로가 ...되지 않는 것입니다.

string realPhysicalPath = Path.Combine(Server.MapPath(" "), filenameToWriteTo); 
fileUpload.PostedFile.SaveAs(realPhysicalPath); 

그냥 경우 상대 또는 물리적 경로가 있는지 확인하기 위해 귀하의 filenameToWriteTo을 인쇄 ... 실제 경로 ... 같은 뭔가를 얻기 위해 Server.MapPath를 사용합니다. 위와 같은 접근 방식을 사용하는 경우

+0

감사합니다.하지만 내 구성 값은 실제 파일 경로 였으므로 실제 경로였습니다. 죄송합니다 복사 붙여 넣기 실패했다 그래서 그것이 물리적 파일 경로가 포함되어 분명하지 않았을 :) – Jen

0

파일을 저장하는 폴더가 있는지 확인하십시오. 폴더가 존재하지 않으면, 당신을 위해 생성되지 않을 것이고 SaveAs 메소드는 현재 가지고있는 예외를 던질 것입니다.

감사합니다.