티스토리 뷰
euc-kr 에서 utf-8로 사이트를 리뉴얼 하면서 기존에 업로드 되어있던
한글파일들이 문제가 되기 시작했다..
'다운로드가 안되요. 페이지가 안떠요. 다운은 되는데 파일이 안열려요. 압축파일 헤더가 깨졌다고 해요.'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
테스트 진행한 버전 IE8/9 , 크롬 , 파이어폭스
<%@LANGUAGE="vbscript" CodePage="65001" %>
<% session.CodePage = "65001" %>
<% Response.CharSet = "utf-8" %>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
한글이 안깨지게 설정해주고..
<%
l_file = Trim(Request("file"))
l_folder = Trim(Request("folder"))
폴더명과 파일명을 받은후
target = "파일경로~~"
Set Fso = Server.CreateObject("Scripting.FileSystemObject")
If Fso.FileExists(target) Then
파일이 있을때
userAgent = Request.ServerVariables("HTTP_USER_AGENT")
브라우저 체크
If InStr(userAgent, "MSIE") > 0 Then
'IE 5.0인 경우.
If InStr(userAgent, "MSIE 5.0") > 0 Then
contentDisp = "inline;filename="
contentType = "application/x-msdownload"
'IE 5.0이 아닌 경우.
Else
contentDisp = "attachment;filename="
contentType = "application/octet-stream"
여기서 아래에 있는 mimetype함수를 이용해서 contentType 변경가능
End If
'Netscape등 기타 브라우저인 경우.
Else
contentDisp = "attachment;filename="
contentType = "application/unknown"
l_file = Replace(l_file,",","")
그롬에서 중복헤더 오류 처리용
End If
l_file = replace(l_file,"&","&")
마찬가지 오류 처리용
Response.Clear
Response.AddHeader "Content-Transfer-Encoding", "binary"
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "Expires", "0"
이부분은 다운로드 후에 한글이나 엑셀 문서 파일종류가 파일형식이맞지않아서
열리지 않는 문제를 잡아줌..
If InStr(userAgent, "MSIE") = 0 Then
Response.AddHeader "Content-Disposition", contentDisp & l_file
Else
Response.AddHeader "Content-Disposition",
contentDisp & server.UrlPathEncode(l_file)
Set objFile = Fso.GetFile(target)
Response.AddHeader "Content-Length", objFile.Size
Set objFile = Nothing
End If
이부분은 정확하진 않지만 크롬에서 중복헤더 오류가 발생하는문제와
urlpathencode로 파일명을 다시 변경해주면 !@$#@$$!#!@# 로
보이는 문제가 생겨서 따로 처리
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile target
Response.BinaryWrite objStream.Read
Set objstream = Nothing
파일 다운로드~~
Else
showMsgBox " 해당 파일이 존재하지 않습니다.","history.back();"
없으면 리턴
End If
Set Fso = Nothing
End Function
Sub ShowMsgBox(ByVal strMsg , ByVal strGoUrl)
Response.Write "<script language='JavaScript'>" & vbCRLF
If strMsg <> "" Then Response.Write " alert(""" & strMsg & """);" & vbCRLF
If strGoUrl <> "" Then Response.Write " " & strGoUrl & vbCRLF
Response.Write "</script>" & vbCRLF
Response.End
End Sub
Function GetMIMEType(Extension)
dim Ext
Ext = UCase(Extension)
select case Ext 'Common documents
case "TXT", "TEXT", "JS", "VBS", "ASP", "CGI", "PL", "NFO", "ME", "DTD"
sMIME = "text/plain"
case "HTM", "HTML", "HTA", "HTX", "MHT"
sMIME = "text/html"
case "CSV"
sMIME = "text/comma-separated-values"
case "JS"
sMIME = "text/javascript"
case "CSS"
sMIME = "text/css"
case "PDF"
sMIME = "application/pdf"
case "RTF"
sMIME = "application/rtf"
case "XML", "XSL", "XSLT"
sMIME = "text/xml"
case "WPD"
sMIME = "application/wordperfect"
case "WRI"
sMIME = "application/mswrite"
case "XLS", "XLS3", "XLS4", "XLS5", "XLW", "XLSM"
sMIME = "application/msexcel"
case "DOC"
sMIME = "application/msword"
case "PPT","PPS"
sMIME = "application/mspowerpoint"
'WAP/WML files
case "WML"
sMIME = "text/vnd.wap.wml"
case "WMLS"
sMIME = "text/vnd.wap.wmlscript"
case "WBMP"
sMIME = "image/vnd.wap.wbmp"
case "WMLC"
sMIME = "application/vnd.wap.wmlc"
case "WMLSC"
sMIME = "application/vnd.wap.wmlscriptc"
'Images
case "GIF"
sMIME = "image/gif"
case "JPG", "JPE", "JPEG"
sMIME = "image/jpeg"
case "PNG"
sMIME = "image/png"
case "BMP"
sMIME = "image/bmp"
case "TIF","TIFF"
sMIME = "image/tiff"
case "AI","EPS","PS"
sMIME = "application/postscript"
'Sound files
case "AU","SND"
sMIME = "audio/basic"
case "WAV"
sMIME = "audio/wav"
case "RA","RM","RAM"
sMIME = "audio/x-pn-realaudio"
case "MID","MIDI"
sMIME = "audio/x-midi"
case "MP3"
sMIME = "audio/mp3"
case "M3U"
sMIME = "audio/m3u"
'Video/Multimedia files
case "ASF"
sMIME = "video/x-ms-asf"
case "AVI"
sMIME = "video/avi"
case "MPG","MPEG"
sMIME = "video/mpeg"
case "QT","MOV","QTVR"
sMIME = "video/quicktime"
case "SWA"
sMIME = "application/x-director"
case "SWF"
sMIME = "application/x-shockwave-flash"
'Compressed/archives
case "ZIP"
sMIME = "application/x-zip-compressed"
case "GZ"
sMIME = "application/x-gzip"
case "RAR"
sMIME = "application/x-rar-compressed"
'Miscellaneous
case "COM","EXE","DLL","OCX"
sMIME = "application/octet-stream"
'Unknown (send as binary stream)
case else
sMIME = "application/octet-stream"
end select
GetMimeType = sMIME
%>
'serverSide > ASP' 카테고리의 다른 글
[ASP] EUC-KR 환경에서 ajax form 전송 multiple file upload (0) | 2018.07.09 |
---|---|
[ASP]오류 'ASP 0115' (0) | 2018.07.04 |
[ASP]JSON 생성 시 따옴표 처리 (0) | 2018.06.29 |
[ASP] ADODB.Connection 오류 '800a0e7a' (0) | 2015.09.14 |
[ASP] XML UTF-8 네트워크 디렉토리 파일 생성 (0) | 2014.09.04 |
댓글