우리 프로젝트를 개발하는 동안(파일은 데이터베이스에 저장됨) 다운로드된 파일이 http 헤더 형식으로 기록되는 것으로 나타났습니다. 다음과 같이 Response.Clear();
응답.버퍼 = 거짓;
Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(fileWJNR.Rows[0]["WJM"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite(바이트 스트림);
Response.End();
그러나 프로젝트가 배포된 후 사용자가 IE6.0에서 탐색하면 가로채서 닫히고 종료됩니다. 당시 제 동료는 팝업 양식을 사용했는데, 그 팝업 양식에 '클릭해서 다운로드'를 해서 가로채지 않도록 했습니다.
저는 좀 더 직접적인 해결책을 시도했습니다. 클릭할 때 먼저 임시 파일을 생성한 다음 임시 파일에 링크하는 것입니다. 즉, 파일 다운로드 또는 열기 대화 상자가 팝업됩니다. 코드는 매우 간단합니다.
string fileName = "file name" //파일 ID 사용
문자열 tempFilePath = Request.PhysicalPath;
tempFilePath = tempFilePath.Substring(0,tempFilePath.LastIndexOf("\"));
tempFilePath += " \temp\ " + 파일이름;
,
FileMode.OpenOrCreate,FileAccess.ReadWrite);
{
byte[] docBody = (byte[])fileWJNR.Rows[0]["WJNR"] //변환
파일.쓰기(docBody, 0, docBody.Length);
파일.닫기();
Response.Redirect("temp\" + 파일이름);
}
잡다
{
파일.닫기();
}