강제 파일 다운로드 하기
- 이미지, pdf등 바로열리지 않고 강제로 다운로드 하기
<% @ codepage="65001" language="VBScript" %>
<%
'//사용
'<a href="/proc/download.asp?fn=파일 경로&ofn=다운로드 될때의 변경 파일명">파일 다운로드</a>
'일부 웹에서 열리는 파일(txt, 이미지)을 강제로 다운로드 하기위함.
session.codePage = 65001
Response.CharSet = "UTF-8"
Response.Expires = -10000
Server.ScriptTimeOut = 300
' 파라미터값 처리
Dim fn : fn = Trim(Request("fn")) '실제파일이 있는경로명+파일명 /data/xml/abc.xml
Dim ofn : ofn = Trim(Request("ofn")) '다운로드시 변경되는 파일명 abcd.xml --> abc.xml이 abcd.xml로 파일명변경되어 다운로드 된다.'
' 확장자 추출
Dim TmpStr : TmpStr = Split(Filename, ".")
Dim Ext : Ext = ""
Dim Name
For Each Name In TmpStr
Ext = Name
Next
Ext = LCase(Ext)
ofn = Server.UrlEncode(ofn)
ofn = Replace(ofn, "+", "")
ofn = Replace(ofn, "%2E" & Ext, "." & Ext)
'Dim DirPath : DirPath = server.mappath("/") 시스템 디렉토리 경로 (E:~~~)
Dim DirPath : DirPath = server.mappath("\files") '//시스템 디렉토리 경로 (E:~~~) (가상 디렉토리 사용)
Dim nFullPath : nFullPath = ""
Dim FileInfo : FileInfo = Split(fn, "/")
Dim FileName : FileName = ""
For i = 1 To Int(UBound(FileInfo)) - 1
DirPath = DirPath &"\"& FileInfo(i)
Next
DirPath = Replace(DirPath, "\\", "\")
FileName = FileInfo(UBound(FileInfo))
nFullPath = DirPath &"\"& FileName
'Response.Write nFullPath
'Response.End
Set objFSO = server.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(nFullPath)=true Then
'파일이 존재 한다면
'파일 크기 반환
Set objFile = objFSO.GetFile(nFullPath)
intFileSize = objFile.Size
Set objFile = Nothing
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=" & ofn
Response.AddHeader "Content-Type", "application/pdf; charset=utf-8"
Response.AddHeader "Content-Transfer-Encoding", "binary"
Response.AddHeader "Content-Length", intFileSize
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "Expires", "0"
' 스트림을 선언
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile nFullPath '다운받을경로(파일명포함)
'strFile = objStream.Read
Do While Not objStream.EOS And Response.IsClientConnected
Response.BinaryWrite objStream.Read(1024)
Response.Flush()
Loop
objStream.Close
Set objStream = Nothing
Set objFSO = Nothing
Else
'파일이 없을 때
Response.write "<script language='javascript'>"
Response.write "alert('해당 파일을 찾을 수 없습니다.');"
Response.write "history.back();"
Response.write "</script>"
End If
%>
'[ Web 관련 ] > asp' 카테고리의 다른 글
IIS 7.5 오류페이지 설정 방법 (ASP/ASPX) (0) | 2018.09.27 |
---|---|
파일 업로드 제한 늘리기, IIS설정 (WIN2012, ABCUpload4 기준) (0) | 2018.09.19 |
초를 시:분:초로 표현 00:00:00 형식 (asp) (0) | 2018.08.23 |
asp 날짜 형식 변경 (0) | 2018.08.22 |
ASP 배열을 자바스크립트 배열로 변경 (0) | 2018.08.20 |