2009-11-19 2 views
0

내 창 모바일에서 서버를 업로드하는 중 문제가 있습니다. 서버에있는 .zip 파일이 생성 중입니다. 열 수 없습니다 및 손상된문제는 내 코드에서 Windows Mobile에서 서버로 파일을 업로드하는 것입니다

여기

코드

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uploadUrl); 

     req.Method = "PUT"; 
     req.AllowWriteStreamBuffering = true; 

     // Retrieve request stream and wrap in StreamWriter 
     Stream reqStream = req.GetRequestStream(); 
     StreamWriter wrtr = new StreamWriter(reqStream); 

     // Open the local file 
     StreamReader rdr = new StreamReader(localFile); 

     // loop through the local file reading each line 

     char[] buff = new char[1024]; 
     int inLine = rdr.Read(buff, 0, 1024); 
     //int inLine = rdr.ReadBlock (buff,0,1024); 
     while (inLine > 0) 
     { 
      wrtr.WriteLine (buff); 

      inLine = rdr.Read (buff, 0, 1024); 
     } 

     rdr.Close(); 
     wrtr.Close(); 

     try 
     { 
      req.GetResponse(); 
     } 
     catch 
     { 

     } 
     reqStream.Close(); 

감사

답변

0

내가 볼 첫 번째 문제는 항상 '버프'의 전체 내용을 작성하는 것입니다,의 단지 수입니다 읽은 바이트 수. 파일 크기가 1024로 균등하게 나눌 수 없다면 문제가됩니다. 그것은 또한 읽기에서 전체 1024 바이트를 가져 오지 않는 문제이기도합니다.

업데이트 1

내가 여기에 질문 두 번째 것은 왜 이진 데이터를 유지하는 문자 []를 사용하고 있습니까? 그것은 모든 곳에서의 나쁜 습관입니다. char는 문자열 데이터 용이며 (CE의 char는 어쨌든 2 바이트입니다). 바이너리 데이터에 바이트 []를 사용하십시오. 현재 인코딩이 데이터 바이트에서 MSB를 스트립하는 것과 같은 일을하는 것은 가능합니다. 왜냐하면 여러분이 char에 채워 넣기 때문입니다. 또한 크기 문제와 관련 될 수도 있습니다.

+0

nope .. 나는 당신이 말한 방식대로 시도했다. 작동하지 않는다. – Naruto

+0

두 파일을 비교하여 이진 수준에서 실제로 다른 점을 확인 했습니까? 끝이 뭔가? 패킷 간? 부패가 무엇인지 알면 그것이 무엇인지 알아낼 수 있습니다. – ctacke

+0

아니요, 일부 시간은 파일이 단지 1KB지만 소스 파일은 30KB가 될 것입니다 ...하지만 바이트 배열을 통해 전체 파일을 읽을 수 있습니다 .. 내 코드를 한 번 더 확인해 주시겠습니까 – Naruto

관련 문제