2013-05-08 4 views
1

사용자 비디오를 녹화하고 컨트롤러에 데이터를 보내고 있습니다. 컨트롤러는 base64 데이터를 문자열로 수신합니다. 그런 다음 base64 문자열을 다음과 같이 바이트로 변환합니다.base64 데이터를 비디오로 변환하는 방법

public ActionResult Content(string data) 
{ 
    byte[] ret = System.Text.Encoding.Unicode.GetBytes(data);   
    FileInfo fil = new FileInfo("D://test.mp4"); 
    MemoryStream stream = new MemoryStream(ret); 
    var getdata = stream.GetBuffer(); 
    using (Stream sw = fil.OpenWrite()) 
     { 
     sw.Write(getdata, 0, getdata.Length); 
     sw.Close(); 
     } 
} 

동영상이 다운로드되지만 동영상은 콘텐츠를 재생하지 않습니다. 어떤 몸이라도 그 이유를 말해 줄 수 있습니까?

답변

2

base64 문자열에서 원래 바이트 배열을 복구해야합니다.이 경우 FromBase64String을 사용하십시오.

public ActionResult Content(string data) 
{ 
    byte[] ret = Convert.FromBase64String(data);   
    FileInfo fil = new FileInfo("D://test.mp4"); 

    using (Stream sw = fil.OpenWrite()) 
    { 
     sw.Write(ret , 0, ret .Length); 
     sw.Close(); 
    } 
} 

코드에서 수행하는 작업은 base64 문자열을 유니 코드 문자열로 취급하는 것입니다.

+0

만약 내가 이렇게하면 'var getdata = stream.GetBuffer();'에서 오류가 발생하고 메모리 스트림의 내부 버퍼에 액세스 할 수 없다는 오류가 발생했습니다. – Jonathan

+0

@Jonathan - 왜 액세스해야합니까? 메모리 스트림에서 파일 스트림으로 복사하기 만하면 (또는'byte []'를 디스크에 직접 씁니다. (결국'ret'입니다.) 대답이 업데이트되었습니다 .. – Oded

+0

감사합니다. – Jonathan

관련 문제