'프로그래밍/ETC'에 해당되는 글 11건

  1. 2013.03.15 | ADODB.Stream을 이용한 다운로드,파일저장

ADODB.Stream을 이용한 다운로드,파일저장

프로그래밍/ETC | 2013. 3. 15. 00:17
Posted by 손반장님

<%
'Load a file from disk
Function LoadStream(FilePath)
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 'adTypeBinary=1
objStream.Open
objStream.LoadFromFile FilePath
LoadStream = objStream.Read
objStream.Close
Set objStream = Nothing
End Function

'Load a file from url
Function LoadStreamUrl(FilePath)
Dim objXmlHttp, imgData
Set objXmlHttp = createobject("Microsoft.XMLHTTP")
objXmlHttp.open "get",FilePath,false
objXmlHttp.send()

imgData = objXmlHttp.responseBody
Set objXmlHttp = nothing

LoadStreamUrl = imgData

'파일을 웹서버에 저장하고싶으면 아래를 활성화

'Set objStream = CreateObject("ADODB.Stream")
'objStream.Open()
'objStream.Type = 1
'objStream.Write imgData
'objStream.SaveToFile fPath & "" & FileName &"."& TailName,2
'Set objStream = nothing
End Function

'returns the MIME header type for a given extension
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"
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
End Function

'Sends the specified file to the browser
sub SendStreamToBrowser(FileStream, FileName, ContentType, IsInline)
Dim FileExt, FileSize
'Disable error checking
on error resume next
'Clear buffer
Response.Clear
FileExt = mid(FileExt, instrrev(FileName,".") + 1)
FileSize = Ubound(FileStream) + 1
'Add filename to header
Response.AddHeader "Connection", "keep-alive"
Response.AddHeader "Content-Length", FileSize
'Check if data should be delivered inline or not
If IsInline = True then
'Allow the browser to render the file inside a browser window (if it can)
Response.AddHeader "Content-Disposition","inline; filename=" & FileName
Else
'Force browser to save file
Response.AddHeader "Content-Disposition","attachment; filename=""" & FileName & """"
End If
'Get ContentType for download
select case ContentType
case false
'Generic binary ContentType and Charset
Response.ContentType = "application/octet-stream"
Response.Charset = "UTF-8"
case ""
'Find out what it should be
Response.ContentType = GetMIMEType(FileExt)
case else
'Use the ContentType that was passed
Response.ContentType = ContentType
end select
'Send data to client
Response.BinaryWrite(FileStream)
Response.Flush
End Sub

 

Sub App(sourceUrl, targetUrl, charset)
 targetUrl = Replace(targetUrl, "<#charset#>", charset)

 Dim WinHttpReq, strHttpReq
 Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
 WinHttpReq.SetTimeouts 30000, 30000, 30000, 30000
 WinHttpReq.Open "GET", sourceUrl, False
 WinHttpReq.Send
 WinHttpReq.WaitForResponse
 strHttpReq = WinHttpReq.ResponseText
 Set WinHttpReq = Nothing

 If InStr(strHttpReq, "<!--ERROR-->") > 0 Or InStr(strHttpReq, "Service Unavailable") > 0 Then
  Call WriteLog(targetUrl)
  Exit Sub
 End If

 Dim objStream
 Set objStream = CreateObject("ADODB.Stream")
 objStream.Mode = 3
 objStream.Type = 2 ' adTypeText
 If charset = "ansi" Then
  objStream.CharSet = "euc-kr"
 ElseIf charset = "utf8" Then
  objStream.CharSet = "utf-8"
 End If
 objStream.Open
 objStream.WriteText strHttpReq
 objStream.SaveToFile targetUrl, 2
 objStream.Flush
 objStream.Close
 Set objStream = Nothing
End Sub
 
'CALL SendStreamToBrowser(LoadStreamUrl("http://sstatic.naver.net/search/img2/logo_naver_2.gif"),"logo_naver_2.gif","",True)
%>

'프로그래밍 > ETC' 카테고리의 다른 글

하나의 IIS에서 여러 웹사이트 SSL포트(443)를 같이 쓰기  (0) 2013.03.15
jquery onerror 처리  (0) 2013.03.15
jquery select 관련정리  (0) 2013.03.15
jquery select 값 읽어오기  (0) 2013.03.15
MimeType 목록  (0) 2013.03.15
 
블로그 이미지

손반장님

카테고리

분류 전체보기 (68)
잡담 (15)
stuff (6)
Mountain (11)
프로그래밍 (35)
ASP.NET MVC (0)
ASP.NET (1)
JAVA (8)
AJAX (1)
LINUX (0)
MS-SQL (7)
ORACLE (1)
MYSQL (6)
ETC (11)