원본 작품 : 가능_Y, 타임스클래스룸에서 다운로드
doc, xls, jpg 파일의 URL 경로를 브라우저 주소창에 직접 입력하면 해당 파일이 브라우저에 바로 표시됩니다. 대부분의 경우 사용자가 다운로드할 수 있도록 다운로드 프롬프트 상자를 직접 팝업으로 표시하려고 합니다. 여기에는 두 가지 방법이 있습니다.
1. 서버의 iis 및 doc와 같은 지도 접미사를 설정합니다.
2. 클라이언트로 보낼 때 콘텐츠 유형을 설정합니다.
<%>
방법 2에 대해 자세히 설명합니다.
응답.버퍼 = true
응답.
희미한 URL 지우기
희미한 fso,fl,flsize
희미한 이름
희미한 objStream,ContentType,flName,isre,url1
다운로드 파일 호출 시 '********************************************가 전달됩니다. 이름
Dname=trim(요청("n"))
'************************************************ * ****************
Dname<>""이면
'********************************다운로드한 파일이 저장되는 서버 디렉터리
url=server.MapPath("/")&""&D이름
'************************************************ * *
End If
Set fso=Server.CreateObject("Scripting.FileSystemObject")
fl=fso.getfile(url) 설정
flsize=fl.size
flName=fl.name
fl=아무것도 설정하지 않음
fso=아무것도 설정하지 않음
%>
<%
objStream = Server.CreateObject("ADODB.Stream") 설정
objStream.Open
objStream.Type = 1
objStream.LoadFromFile URL
사례 선택 lcase(오른쪽(flName, 4))
케이스 ".asf"
ContentType = "비디오/x-ms-asf"
케이스 ".avi"
ContentType = "비디오/avi"
케이스 ".doc"
ContentType = "응용 프로그램/msword"
케이스 ".zip"
ContentType = "응용 프로그램/zip"
케이스 ".xls"
ContentType = "application/vnd.ms-excel"
케이스 ".gif"
콘텐츠 유형 = "이미지/gif"
케이스 ".jpg", "jpeg"
ContentType = "이미지/jpeg"
케이스 ".wav"
ContentType = "오디오/wav"
케이스 ".mp3"
ContentType = "오디오/mpeg3"
케이스 ".mpg", "mpeg"
ContentType = "비디오/mpeg"
케이스 ".rtf"
ContentType = "응용 프로그램/rtf"
사례 ".htm", "html"
콘텐츠 유형 = "텍스트/html"
사례 ".txt"
ContentType = "텍스트/일반"
그렇지 않은 경우
ContentType = "응용 프로그램/옥텟 스트림"
선택 종료
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length", flsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
응답.플러시
응답.지우기()
objStream.Close
ObjStream = Nothing
%>
설정다음을 download.asp에 저장한 다음 <a herf=" http://www.downcodes.com/download.asp?n=file.doc">download!</ a >를 사용할 수 있습니다. file.doc를 같은 디렉토리에 다운로드하려면!
하지만 여기서는 file.doc 경로를 URL에 직접 쓰는 것은 안전하지 않다는 문제가 있으므로 검색 후 file.doc 경로를 데이터베이스에 저장하는 것이 좋습니다.
이 프로그램 앞에 판단을 추가하면
경로를 얻을 수 있습니다.
if instr(Request.ServerVariables("HTTP_REFERER"),"http://your domain name")=0 then
응답.종료
end if는
다른 사람이 링크를 훔치는 것을 아주 잘 방지할 수 있습니다.