某個案子要做 [AS3] 擷取 Flash 畫面上的某一區塊為圖檔 這樣的需求,但得到空間資訊後才發現必須得用古老的 ASP 寫。
上網找了一下,寫法整理在下面。

Base64 的變數名為 imageData,請用 POST 方式丟。
※另外要注意,在 IIS 中,ASP 針對存入圖檔的目錄需另外開啟 IUSR 角色寫入的權限。

<%@Language="VBScript" CodePage=65001 %>  
<%  
On Error Resume Next

Function getTimeToString()  
Dim MyNewRandomNum  
Randomize  
MyNewRandomNum = Int(Rnd \* 100)+1  
d = Now()  
getTimeToString = Year(d) & "_" & Month(d) & "_" & Day(d) & "_" & Hour(d) & "_" & Minute(d) & "_" & Second(d) & "_" & MyNewRandomNum  
End Function

Dim filename  
filename = getTimeToString() & ".jpg"

Dim xml : Set xml=Server.CreateObject("MSXML2.DOMDocument")  
Dim stm : Set stm=Server.CreateObject("ADODB.Stream")  
xml.resolveExternals=False  
xml.loadXML "<?xml version=’1.0′?><data><!\[CDATA\[" & Request.Form("imageData") & "\]\]></data>"  
xml.documentElement.setAttribute "xmlns:dt","urn:schemas-microsoft-com:datatypes"  
xml.documentElement.dataType = "bin.base64"  
stm.Type=1 ‘adTypeBinary  
stm.Open  
stm.Write xml.documentElement.nodeTypedValue  
stm.SaveToFile Server.MapPath("upload") & "/" & filename  
stm.Close  
Set xml=Nothing  
Set stm=Nothing

IF err.number<>0 THEN  
Response.Write "Result=Failed&msg=發生錯誤"  
ELSE  
Response.Write "Result=" & filename ‘輸出檔名  
END IF  
%>