제목 : boarddown.asp : 파일 강제 다운로드 페이지
파일 강제 다운로드라하면,
자료실 만들 때, *.zip 파일을 제외하고
*.gif 또는 *.jpg, *.htm 등의 파일은 웹 사이트에서
다운로드시 직접 실행되는 경우가 기본값으로 설정되어져 있다.
그런 단점을 극복하고자 아래와 같은 boarddown.asp와 같은 페이지를 하나 두고
이 페이지에 boarddown.asp?strFileName=Test.hwp와 같이 페이지를 요청하면,
해당 파일이 지정된 경로(./files/)에 있다면, 해당 파일을 실행하지 않고,
무조건 다운로드 창을 띄워주는 역할을 한다.
다만, 이런경우에는 서버측 메모리를 많이 소비하는 단점이 있다.
이를 해결하기 위해서는 추가적으로 확장자가 zip이면 일반 다운로드 방식을
기타 실행 가능한 파일이면 강제 다운로드 방식을 선별적으로 지정하는
로직을 추가하면 될 것이다.
<%
' boarddown.asp의 코드 구현
Call Main()
Sub Main()
strFileName = Request("strFileName")
If strFileName = "" Then
Call RedirFail()
Exit Sub
Else
Call RedirectFile(strFileName)
End If
End Sub
Sub RedirectFile(strFileName)
'서버에 저장될 파일의 위치와 이름
strFilePath = Server.MapPath(".") + "\files\" & strFileName
Set objFSO = Server.CreateObject("SiteGalaxyUpload.FileSystemObject")
Set objFile = objFSO.OpenBinaryFile(strFilePath, 1, False)
Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-disposition", "attachment; filename=" & strFileName
Response.BinaryWrite objFile.ReadAll
Response.End
Set objFile = Nothing
Set objFSO = Nothing
End Sub
Sub RedirFail()
Response.Redirect("./boardlist.asp")
End Sub
%>