새로 생성 된 OpenXML (docx) 파일을 임시 폴더에 저장하지 않고 ASP.Net 페이지에서 다운로드 할 수 있습니까?임시 파일없이 OpenXML 파일 다운로드
MSDN 나는 임시 파일 사용에 대한 지침서 만 찾았지만 WordprocessingDocument.MainDocumentPart.GetStream()
을 사용하고 스트림을 직접 작성하는 방법에 대해 생각했습니다.
새로 생성 된 OpenXML (docx) 파일을 임시 폴더에 저장하지 않고 ASP.Net 페이지에서 다운로드 할 수 있습니까?임시 파일없이 OpenXML 파일 다운로드
MSDN 나는 임시 파일 사용에 대한 지침서 만 찾았지만 WordprocessingDocument.MainDocumentPart.GetStream()
을 사용하고 스트림을 직접 작성하는 방법에 대해 생각했습니다.
문서를 만들 때 MemoryStream
을 보조 저장소로 사용하십시오. 그런 다음 문서를 만들고 닫은 다음 메모리 스트림의 내용을 클라이언트에 제공하십시오. 이름에서 알 수 있듯이,이 문서의 패키지가 아닌 모든 것의 한 부분이다, 때문에
using(var stream = new MemoryStream())
{
using(var doc = WordprocessingDocument.Create(stream, WordprocessingDocumentType.Document, true)
{
...
}
stream.Position = 0;
stream.CopyTo(Response.OutputStream);
}
그냥
MainDocumentPart
을 잡아하지 마십시오.
또한 콘텐츠 유형 및 처리에 대한 응답 헤더를 설정해야합니다.
Stream.CopyTo() (.NET 4.0)은 여기에서 도움이 될 수 있습니다.
WordprocessingDocument.MainDocumentPart.GetStream().CopyTo(Response.OutputStream);
MIME 유형, 내용 처리 등에 대한 헤더를 설정해야합니다.
이것은이 질문과 중복되는 것처럼 보입니다. http://stackoverflow.com/questions/393647/response-content-type-as-csv 응답에 데이터를 직접 작성하여 동일한 솔루션을 사용할 수 있어야합니다. – kareem