2012-08-28 4 views
1

ASP.NET 웹 양식 응용 프로그램이 있습니다. 사용자가 을 다운로드 할 수 있도록 다운로드 링크를 만들고 싶습니다. 그러나 파일을 서버에 저장할 필요는 없습니다. 내가 것 지금서버에 저장하지 않고 XML을 만들고 다운로드하는 방법

Dim productId As String = Request.QueryString("productId") 
Dim xmlDoc As String = _ProductServices.GetXmlDocPerId(productId) 
Dim xdoc As XmlDocument = New XmlDocument() 
xdoc.LoadXml(xmlLicense) 

다음 download.aspx.vb 페이지에서

<asp:HyperLinField Text="Download" DataNavigateUrlFormatString="download.aspx?ProductId={0}" DataNavigateUrlFields="ProductId"> 

: 내 영문 파일에서

나는 다운로드 링크 (A의 GridView 내부에 위치)가 파일을 만들려면 XML 컨텐트를 안에 넣고 서버에 저장하지 않고 사용자에게 전달하십시오. MemoryStreamStreamReader을 조합하여 사용해야합니까?

Private Sub SendResults() 
     'Write the XML for the DataSet. 
     Page.Response.ContentType = "text/xml" 
     Page.Response.Output.Write(xmlContentAsString) 
     Page.Response.End() 
    End Sub 

는 기본적으로, 당신은이 XMLDocument 내용을 응답 출력 유형을 변경하고 출력에 전달 :로

답변

3

파일을 만들 필요가 없습니다. 브라우저에 직접 출력 할 수있는 XmlDocument에 이미 XML 콘텐츠가 있습니다.

테스트되지 않은 예 :

Response.ContentType = "application/xml" 
Response.Clear() 

xdoc.Save(Response.OutputStream) 
Response.Flush() 

업데이트 :

당신이 단순히 content-disposition 헤더를 추가 할 필요는 다운로드 대화 상자를 표시하도록 브라우저를 얻으려면 :

Response.AddHeader("Content-Disposition", "attachment; filename=some_name.xml"); 
+0

감사! @CiccioMiami - 파일을 만들지 않고도 다운로드 대화 상자를 열어도됩니다. 사용자가 XML 파일을 다운로드하여 브라우저에서 볼 수 없기 때문에 파일을 만들어야합니다. – CiccioMiami

+0

@CiccioMiami - 파일을 만들 필요없이 다운로드 대화 상자를 열어도됩니다. ['Content-Disposition' 헤더] (http://en.wikipedia.org/wiki/MIME#Content-Disposition)도 사용해야하지만 실제 디스크에 파일을 만들 필요는 없습니다. – Oded

+0

덕분에 다운로드가 작동하지만 XML에서 구문 분석 오류가 발생합니다 ... XML 응답이 아래에있는 메서드를 사용하면 올바르게 구문 분석되지만 다운로드 프롬프트가 표시되지 않습니다. – CiccioMiami

4

그것은 간단 할 수 있습니다. 실제로 시스템에 파일을 만들지 않고 응답을 클라이언트로 스트리밍합니다.

+0

감사를 수행 귀하의 코드는 다운로드 프롬프트를 사용자에게 표시하거나 단순히 XML 컨텐츠를 표시합니까? – CiccioMiami

+0

좋은 질문입니다. 브라우저가로드 될 수 있는지 여부를 추측 할 수 있도록 브라우저에 남겨 두었습니다. 기본적으로 브라우저에로드됩니다. 그러나 파일을 다운로드하도록 요구하는 데 사용할 수있는 또 다른 콘텐츠 유형이 있습니다. https://www.vbulletin.com/forum/showthread.php/70959-HTTP-Headers-to-force-file-to-download-rather -than-auto-open. 이것을 사용하면 원하는대로 파일을 다운로드 할 수 있습니다. 해당 링크에서 언급 한 파일 이름으로 처리해야합니다. –

관련 문제