2009-07-20 3 views
3

로 응답을 통해 클라이언트에 Zip 파일을 전송하는 것은이 단순히 일부 "단어와 함께 우편 안에있는 readme.txt 문서와 zip 파일을 반환하기 위해 노력하고있어이 시점에서 내 코드DotNetZip

private void sendToClient(Dictionary<string, string> reportDic) 
    { 
     Response.Clear(); 
     Response.BufferOutput = false; 
     String ReadmeText = "some text"; 
     Response.ContentType = "application/zip"; 
     Response.AddHeader("content-disposition", "filename=" + "filename.zip"); 
     using (ZipFile zip = new ZipFile()) 
     { 
      zip.AddEntry("Readme.txt", ReadmeText); 
      zip.Save(Response.OutputStream); 
     } 
     Response.Close(); 
    } 

입니다 텍스트 "문서 안에.

나는 doucment (예기치 않은) 안에 텍스트가없는 readme.txt 문서 (예상)가있는 filename.zip (예상)이라는 zip 파일을 얻습니다.

이 코드는 예제 here과 거의 동일합니다. 그래서 다른 사람들이이 정확한 문제에 부딪쳤다는 것을 알게됩니다.

나의 최종 목표는 이와 비슷한 일을하는 것입니다.

private void sendToClient(Dictionary<string, string> reportDic) 
    { 
     Response.BufferOutput = false; 
     Response.ContentType = "application/zip"; 
     Response.AddHeader("content-dispostion", "filename=text.zip"); 
     Response.ContentEncoding = Encoding.Default; 
     Response.Charset = ""; 
     using (ZipFile zip = new ZipFile()) 
     { 
      foreach (string key in reportDic.Keys) 
      { 
       zip.AddEntry(key, reportDic[key]); 
      } 
      zip.Save(Response.OutputStream); 
     } 
     Response.Close(); 
    } 

zip 파일에 3 개의 문자열을 파일로 추가하지만 지금은 예제가 작동하도록 해결할 것입니다.

누구든지 의견이 있으십니까?

감사

--UPDATE-- 나는 새 프로젝트에 복사하는 경우이 사실 작동합니다, 그것은 광고로 그냥 내 프로젝트에 DLL을의 독성 혼합 또는 일부 손상이 있어야 작동 , 그것은 애매하거나 무언가입니다. 훌륭한.

+0

iZarc로 열려고 할 때 잘못된 우편 헤더 오류가 발생하지만 열리고 빈 파일이 제공되며이 압축 파일은 xp 압축 유틸리티로 열리지 않습니다. – jim

+0

바이트 []와 스트림이있는 문자열로 "AddEntry"메소드를 시도했습니다. 좋지 않다. – jim

+0

짐, 이거 분류 했니? – Cheeso

답변

1

힌트 :

당신이 전자를 사용하는 경우

Response.Close(); 

를 사용하는 대신

HttpContext.Current.ApplicationInstance.CompleteRequest();  

사용하지 않는, 당신은 HTML 정크은 zip 파일의 맨 아래에 추가 얻을 것이다 .

+0

cheeso. – jim

0

일부 더미 텍스트로 AddFile 메서드를 넣으려고 했습니까 = 이것이 필요하다고 생각합니다.

+0

방금 ​​시도한 것처럼 zip.addFile ("somefile.txt") 같은 파일을 보니 예외가 발견되지 않았습니다. – jim

+0

addFile은 디스크에 파일을 추가하는 것과 같습니다. – jim

0

CodePlex에 연결된 예는 AddEntry 메서드가 스트림에서 데이터를 읽는 것 같습니다. 방금 문자열을 전달하는 것일 수도 있습니다. 어쩌면 StringReader을 만들어서 ReadmeText 문자열을보고이를 대신 전달할 수 있습니까?

+0

마치 문자열을 가져 오기 위해 오버로드 된 것처럼 보입니다. – jim

+0

아, 웹 페이지의 예에서 실제 API를 보지 않았습니다. –

+0

API를 전혀 보지 못했고, 예제를 거치지 않았고 가난했습니다. 또는 적어도 나는 그들을 알아 내기에는 너무 어리 석습니다.어디에서 다른 곳으로 가야할지 모르겠다. 뭔가 다른 것을 사용하는 것과 같은 대안적인 해결책을 찾는다. – jim

관련 문제