2012-11-02 2 views
1

을 업로드 :MVC 파일이 코드가 UnauthorizedAccessException

양식에서 업로드 한 사진을 촬영하고 서버 (로컬 서버)에 저장하기위한 것입니다
[HttpPost] 
    public ActionResult Edit(Photograph photo, HttpPostedFileBase image) 
    { 

     if (ModelState.IsValid) 
     { 
      if (image != null) 
      { 
       byte[] imageData = new byte[image.ContentLength]; 
       image.InputStream.Read(imageData, 0, image.ContentLength); 
       System.IO.File.WriteAllBytes(HttpContext.Server.MapPath("~/Content/Images"), imageData); 
      } 

      repository.SavePhotograph(photo); 
      TempData["message"] = string.Format("{0} has been saved", photo.Name); 
      return RedirectToAction("Index"); 
     } 
     else 
     { 
      return View(photo); 
     } 
    } 

. 모든 프로젝트가 네트워크 서비스 사용자 권한과 IIS_IUSRS 그룹 권한으로 유지되는 폴더 "Visual Studio 2010"을 제공했습니다. 저는 또한 관리자로서 Visual Studio를 운영하고 있습니다.

어떤 이유로 나는 그 위치에 파일을 저장할 수 없습니다. 위치는 {Project_Name \ Content \ Images} 아래의 프로젝트 폴더 내에 있습니다. 파일을 저장하려면 어떻게해야합니까?

감사합니다, 그것은 아직도 날 그 위치에 파일을 저장할 수없는 몇 가지 이유

+0

Visual Studio에서 디버그 모드로 실행 중이거나 IIS에 배포 중입니까? – curtisk

답변

1

이유는 오류있는 방법 같은 이유로

System.IO.File.WriteAllBytes() 

는 파일 및 데이터 경로 걸린다.

내가 폴더

System.IO.File.WriteAllBytes(HttpContext.Server.MapPath("~/Content/Images"), imageData); 
를 통과했다 내가 파일 전달되어 있어야합니다

:

System.IO.File.WriteAllBytes(String.Format("{0}{1}", HttpContext.Server.MapPath("~/Content/Images"), image.FileName), imageData); 

지금 나는 내가 그로 찾고 있어요 내 저장소와 오류를 받고 있어요 :)를 너무 많이 코딩하는 것을 좋아합니다.;)

0

.

오류가 있습니까? 그렇다면 여기에 전체 오류를 게시하십시오.

사례 I : 당신이 당신의 MVC 응용 프로그램을 실행하면 옵션 '관리자로 실행'을 사용하여 비주얼 스튜디오를 실행 있는지 확인하려면 Visual Studio를 사용하는 경우.

사례 II : IIS에서 MVC 응용 프로그램을 실행중인 경우. 이미지가 저장되는 폴더로 이동합니다. 그것은 'IIS_IUSRS'사용자에게 부여입니다 모든 권한 '수정'권한.

+0

Case II에서 IIS_IUSRS에 '수정'권한이 부여되고 모든 권한이 부여되지 않는 것이 좋습니다. IIS가 사용 권한을 설정하거나 파일/etc의 소유권을 가져야하는 이유는 없습니다. 그냥 2 센트 ... – Tommy

+0

@ 토미 나중에 나는 변화를 만들었다는 것을 깨닫는다. 감사합니다 – Yasser

+0

나는 당신이 거기 묘사 한 방법에있는 행정관으로 달리는 시각적 인 스튜디오를 얻었다. 어쨌든 IIS_IUSRS가 완전히 제어 할 수 있다면 여전히 작동해야합니다. 오류는 UnauthorizedAccessException입니다. –

0

RE : "System.IO.File.WriteAllBytes"가있는 행 ... 디렉토리에 저장하려고합니까? 업로드 된 파일의 파일 이름은 어디에서 선택 되었습니까? 이 날주고 있었다

관련 문제