2014-07-06 7 views
1

사용자 PC에 파일을 저장하려고하는데 할 수 없습니다. 이 방법은 C에서 파일을 어딘가에 저장하려고 시도하기 때문에 오류가 발생합니다. 나는 그것이 적절하지 않다는 것을 이해합니다. 파일을 다운로드 폴더에 저장하거나 사용자에게 파일 대화 상자를 표시하고 싶습니다.ASP.net이 사용자 폴더에 파일을 다운로드하여 저장합니다.

void SaveReport(Telerik.Reporting.Report report, string fileName) 
{ 
    ReportProcessor reportProcessor = new ReportProcessor(); 
    Telerik.Reporting.InstanceReportSource instanceReportSource = new Telerik.Reporting.InstanceReportSource(); 
    instanceReportSource.ReportDocument = report; 
    RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null); 

    using (FileStream fs = new FileStream(fileName, FileMode.Create)) 
    { 
     fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length); 
    } 
} 

사용자 컴퓨터의 다운로드 폴더에 파일을 저장하거나 사용자가 대상을 선택할 수 있도록 filedialog를 어떻게 표시합니까?

+1

filestream은 클라이언트 시스템이 아닌 서버의 파일에 기록합니다. 문서 바이트를 응답 출력 스트림에 기록하고 컨텐츠 처리 헤더를 응답에 기록하십시오. –

답변

1

파일을 다운로드 할 위치를 강제로 지정할 수 없습니다.

코드에서 파일에 쓰지 말고 응답에서 OutputStream으로 써야합니다.

RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null); 

HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"file.pdf\""); 
HttpContext.Current.Response.OutputStream.Write(result.DocumentBytes, 0, result.DocumentBytes.Length); 
+0

뭔가 다른 일이 발생하지만 파일이 다운로드되지 않습니다. 완전히 엉망진창에 나타납니다. – Nullbyte

+0

지원에 감사드립니다. 추가 도움에 정말 감사드립니다. 그것은 잘 작동합니다. – Nullbyte

0

Filestream은 클라이언트 시스템이 아닌 서버의 파일에 기록합니다.

문서 바이트를 응답 출력 스트림에 작성하고 content-disposition http 헤더를 응답에 작성하십시오.

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

이 브라우저 설정에 따라 파일을 다운로드하라는 메시지를 표시합니다.

클라이언트 컴퓨터에서 어떤 디렉토리 파일이 들어가는 지 제어 할 수 없습니다.

+0

코드를 사용하려고합니다. 코드에 어떻게 통합합니까? 미안하지만, 나는 초보자이기도하다. – Nullbyte