2016-06-22 1 views
1

이미지 파일을 전달하고 해당 이미지 파일의 바이트를 검색 할 수 있도록 나중에 바이트를 데이터베이스에 저장할 수있는 메서드를 만들려고합니다. 방법에 대한 내 코드는 다음과 같습니다.HttpPostedFileBase 개체를 바이트 배열로 변환 할 수 없습니다.

private byte[] GetImageBytes(HttpPostedFileBase ProfilePhoto) 
    { 
     if (ProfilePhoto != null) 
     { 
      using (MemoryStream ms = new MemoryStream()) 
      { 
       ProfilePhoto.InputStream.CopyTo(ms); 
       byte[] array = ms.GetBuffer(); 
       return array; 
      } 
     } 
     else 
     { 
      return null; 
     } 
    } 

문제는 바이트 배열 [0]의 배열을 가져와 바이트로 변환되지 않는다는 것입니다. 디버그 모드에서 나는 아래의 코드와 방법 내부의 코드를 대체하여 다른 방법을 시도 ... 나는 ProfilePhoto가 null가 아닌 것을 알 수 있으며 등 길이 속성이 있습니다 : 다시

 byte[] image = new byte[ProfilePhoto.ContentLength]; 
     ProfilePhoto.InputStream 
      .Read(image, 0, Convert.ToInt32(ProfilePhoto.ContentLength)); 
     return image; 

하지만 성공. 배열 0x0000 ...을 반환하며 이는 기본값입니다. 이 문제를 해결하는 방법을 알려주세요. 아마 그것은 매우 간단하지만


MVC

에 파일을 업로드하는 방법에 대한 지식이 없습니다. 나는 다른 방법을 찾지 만 그 중 누구도 일하지 않았습니다.

답변

3

당신은 그것을 복사하기 전에, 먼저 스트림의 시작으로 추구해야합니다

ProfilePhoto.InputStream.Seek(0, SeekOrigin.Begin); 
ProfilePhoto.InputStream.CopyTo(ms); 
+0

감사합니다 사람이 내 문제를 해결했다. 등가에서는 두 번째 방법으로 문제를 발견했습니다. 나는'ProfilePhoto.InputStream.Position = 0;'을해야만했다. 그리고 다 잘 작동했다. –

+0

예. 그것도 작동합니다. –

관련 문제