2013-02-06 6 views
1

임은 파일 스트림으로 작성하여 .jpg 파일을 생성 :FILESTREAM 및 Windows 사용자 권한

   using (FileStream fs = new FileStream(FileName, FileMode.CreateNew, FileAccess.Write)) 
       { 
        fs.Write(image, 0, image.Length); 
       } 

내가 가진 문제는 특정 상황에서 파일이 잘못된 액세스 권한으로 만들어 졌는지, 더 정확하게는없는 것 같다 어떤 소유주라도 가질 수 있습니다. "현재 소유자를 표시 할 수 없습니다." 고급 보안 설정. 유일한 것은 콘텐츠 자체입니다. 내가 뭘 잘못하고 있니? FileStream을 사용할 때 액세스 권한은 어디에 설정되어 있습니까?

여기에 전체 코드 아마도

 public void SaveImage(string path) 
    { 
     try 
     { 
      //Get the files data 
      List<byte[]> files = GetFiles(); 

      if (files.Count == 0) 
       throw new Exception("No data"); 

      //Calculate the path name 
      string FileDirectory = Path.GetDirectoryName(path); 
      if (FileDirectory.Length > 0) 
       FileDirectory += "\\"; 

      string FileNameBase = Path.GetFileNameWithoutExtension(path); 
      string FileExtension = Path.GetExtension(path); 
      string FinalFileName = ""; 

      if (files.Count == 1) 
      { 
       FinalFileName = FileDirectory + FileNameBase + FileExtension; 
       while (File.Exists(FinalFileName)) 
       { 
        FileNameBase = FileNameBase + DateTime.Now.ToString("yyyyMMddHHmmss"); 
        FinalFileName = FileDirectory + FileNameBase + FileExtension; 
       } 
      } 
      else 
      { 
       FinalFileName = FileDirectory + FileNameBase + "(1)" + FileExtension; 
       while (File.Exists(FinalFileName)) 
       { 
        FileNameBase = FileNameBase + DateTime.Now.ToString("yyyyMMddHHmmss"); 
        FinalFileName = FileDirectory + FileNameBase + "(1)" + FileExtension; 
       } 
      } 

      for (int i = 0; i < files.Count; i++) 
      { 
       byte[] image = files[i]; 
       if (files.Count > 1) 
        FinalFileName = FileDirectory + FileNameBase + "(" + (i + 1).ToString() + ")" + FileExtension; 
       else 
        FinalFileName = FileDirectory + FileNameBase + FileExtension; 

       if (image.Length == 0) 
        throw new Exception("No data"); 

       //Store the image in the specified path 
       using (FileStream fs = new FileStream(FinalFileName, FileMode.CreateNew, FileAccess.Write)) 
       { 
        fs.Write(image, 0, image.Length); 
       } 
      } 
     } 
     catch (FaultException<string> ex) 
     { 
      throw new SdkException(ex.Message, ex.Code, ex.Detail); 
     } 
     catch (FaultException ex) 
     { 
      throw new SdkException(ex.Message, ex.Code, ""); 
     } 

    } 
+0

문제의 원인을 발견 한 것 같습니다. 새 파일을 만들려는 폴더의 사용 권한. 나는 폴더를 삭제하고 다시 만들었지 만 지금은 작동합니다. 내가 아직도 이해할 수없는 것은 왜이 행동과 왜 내가 예외를받지 않았는가하는 것입니다. –

+0

파일에 소유자가 있습니다. 파일에 대한 사용 권한으로 인해 소유자가 누구인지 알 수없는 것입니다. –

답변

0

이 파일이 좋은 방법을 만들어지지 않습니다 예외가 무엇입니까? 여기에 파일 시스템 권한에 대한 자세한 정보가 있습니다. http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.filesystemrights.aspx

+0

아니요, 예외는 없습니다. 파일이 올바르게 작성된 것 같습니다. –

+0

그리고 액세스 권한이 기본 권한이어야합니다. 코드 처리 권한 행을 명시 적으로 볼 수 없습니다. –

+0

모든 코드를 게시 할 수 있습니까? – Jocke