[Classic ASP] 파일다운로드
Wdev
2014-11-15

ASP에서 파일을 다운로드 하는 경우에는 ContentType을 "application/unknown"으로 설정해주어야 MINE 연결이 해제되고 저장하는 방식으로 처리된다.
그리고 헤더를 보낸후에 파일 내용을 바이너리형식으로 보내 주어야 하는데 이를 위하여 파일을 Strem형식으로 읽어 보내주면 된다.

한가지 주의점은 저장파일의 이름변수의 값이 PC에서 파일이름으로 사용할 수 없는 문자가 포함되지 않도록 되어있어여하는데 함수 RefineFileName는 이값들을 정제해주는 기능의 함수로 잘못된 파일이름으로 인한 에러를 방지해 줄 수 있다,

<%

function FileDownload( cPathFile, cSaveFileName )
	Response.ContentType = "application/unknown"
	Response.AddHeader "Content-Disposition","attachment; filename=" & cSaveFileName&" "
	Response.BinaryWrite GetFileStream( cPathFile )
	FileDownload = null
end function

function GetFileStream( cPathFile )
	dim oStream, sFile

	set oStream = Server.CreateObject("ADODB.Stream")
	oStream.Open
	oStream.Type = 1
	oStream.LoadFromFile cPathFile
	sFile = oStream.Read
	set oStream = nothing

	GetFileStream = sFile
end function

function RefineFileName( c )
	c = Replace( c, "/", "" )
	c = Replace( c, "?", "" )
	c = Replace( c, "*", "" )
	c = Replace( c, ">", "]" )
	c = Replace( c, "<", "[" )
	c = Replace( c, "|", "-" )
	c = Replace( c, ":", "-" )
	
	RefineFileName = c
end function
%>
저작권자 © WDEV, 무단전재 및 재배포 금지
ASP/PHP 분류 내의 이전기사