문제

나는 이것이 내가 희망하는 빠른 질문이기를 바랍니다. 몇 가지 보고서를 작성한 다음 사용자에게 로컬 컴퓨터에 저장하라는 메시지를 표시해야합니다. 마지막 으로이 일을 할 때 웹 서버에 파일을 썼다가 클라이언트에게 보냈습니다. Response 물체.

웹 서버에서 생성합니다

            TextWriter tw = new StreamWriter(filePath);

고객에게 보내기 위해

           page.Response.WriteFile(path);

문제는 물리적 파일의 쓰기를 웹 서버로 건너 뛰고 문서를 나타내는 개체에서 응답으로 바로 이동하는 방법이 있습니까?

도움이 되었습니까?

해결책

응답을 사용할 수 있습니다

Response.ContentType = "text/plain";
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.AddHeader("Content-Disposition", "attachment;filename=yourfile.txt");

물론 이것은 텍스트 파일을 작성하려는 경우 작동합니다. 예를 들어 .doc을 작성하려는 경우 ContentType를 "application/msword"등으로 변경합니다 ...

다른 팁

당신은 할 수 있습니다.

이 시도:

Table oTable = new Table();
//Add data to table.

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename="test.xls"");
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.Html32TextWriter oHtmlTextWriter = new System.Web.UI.Html32TextWriter(oStringWriter);
0Table.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();

이렇게하면 사용자에게 Test.xls 파일을 열거나 저장하도록 프롬프트가 제공됩니다. 마찬가지로 테이블 대신 다른 ASP.NET 객체를 제공 할 수 있습니다.

예.

page.Response.WriteFile(yourData, 0, yourData.Length);

이 질문에 대한 정확한 답변은 보고서를 어떻게 구성하는지에 따라 다릅니다 (즉, 당신이 언급하는 "대상"이란 무엇입니까). 단일 문자열이있는 경우 Response.write를 사용하여 작성할 수 있습니다. TextWriter가 필요한 경우 response.output은 원하는 것입니다. 이렇게하면 디스크에 쓰기를 건너 뛰고 WriteFile을 사용할 수 있습니다. 또한 콘텐츠가 바이너리 인 경우 response.outputStream을 사용할 수 있습니다.

사용자가 파일 저장 대화 상자를 보려면 응답을 설정할 수도 있습니다. 그러나 컨텐츠 공연이 반드시 존중 될 필요는 없으므로 사용자는 여전히 브라우저에서 보고서를 직접 열 수 있습니다. 실제 콘텐츠를 출력하기 전에 헤더를 설정해야합니다!

또한 보고서의 형식에 따라 텍스트/평원, 텍스트/CSV 또는 귀하가있는 것과 같은 적절한 것으로 응답을 설정할 수 있습니다. 올바른 마임 유형은 다음에 나열되어 있습니다 IANA 사이트.

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