문제

이것은 내 코드입니다

    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();
    }

이 시점에서 나는 단순히 Zip 내부의 readme.txt 문서가있는 Zip 파일을 문서 안에 "일부 텍스트"라는 단어로 반환하려고합니다.

내가 얻는 것은 Doucment (예기치 않은) 내부에 텍스트가없는 문서 readme.txt (예상)가있는 filename.zip (예상)라는 zipfile입니다.

이 코드는 예에서 거의 구두로됩니다 여기. 다른 사람들 이이 정확한 문제에 빠지게합니다.

내 최종 목표는 이런 일을하는 것입니다.

    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 파일에 파일로 세 문자열을 추가하지만 현재 예제를 작동시킬 수 있습니다.

누구든지 제안이 있습니까?

감사

-업데이트-이것은 효과가 있어야합니다. 실제로 새로운 프로젝트에 복사하면 광고 된대로 작동합니다. 프로젝트에 독성 DLL 또는 부패가 있어야합니다. 아주 멋진.

도움이 되었습니까?

해결책

힌트:

사용하지 마십시오

HttpContext.Current.ApplicationInstance.CompleteRequest();    

대신 사용하십시오

Response.Close();

전자를 사용하면 ZIP 파일의 하단에 HTML 정크가 추가됩니다.

다른 팁

더미 텍스트로 AddFile 메소드를 넣으려고 했습니까?

Codeplex에 연결된 예는 다음과 같은 것 같습니다. AddEntry 메소드는 스트림에서 데이터를 읽습니다. 당신은 단지 끈으로 지나가고 있습니다 - 아마도 당신은 StringReader readMetext 문자열을보고 대신 전달하려면?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top