2013-01-31 126 views
2

我一直試圖使用經典ASP將base64文件保存爲來自服務器端的圖像。我想要的是將文件自動保存到一個特定的位置,並給它一個文件名,現在我很好地編碼它的方面。但是,我無法在沒有首先在瀏覽器上呈現的情況下獲取代碼來保存圖像。這不適用於我,因爲我正在使用的腳本將是自動導出並且沒有用戶輸入。使用經典ASP將Base64保存爲圖像

代碼如下,在網頁中呈現,並詢問用戶在哪裏保存圖像。只是重申我需要它自動保存(無用戶輸入)

base64String ="base64 code goes here - Wont add it as its huge amount of text" 

Set tmpDoc = Server.CreateObject("MSXML2.DomDocument") 
Set nodeB64 = tmpDoc.CreateElement("b64") 
nodeB64.DataType = "bin.base64" ' stores binary as base64 string 
nodeB64.Text = Mid(base64String, InStr(base64String, ",") + 1) ' append data text (all data after the comma) 

vehicleAuditName= "Audit1" 

With Response 
    .Clear 
    .ContentType = "image/png" 
    .AddHeader "Content-Disposition", "attachment; filename=" & vehicleAuditName & ".png" 
    .BinaryWrite nodeB64.NodeTypedValue 'get bytes and write 
    .end 
End With 

回答

3

使用adodb.stream對象的圖像上的服務器側存儲像這樣:

dim bStream : set bStream = server.CreateObject("ADODB.stream") 

bStream.type = adTypeBinary 

call bStream.Open() 

call bStream.Write(binData) 

call bStream.SaveToFile(FullName, adSaveCreateOverWrite) 

call bStream.close() 
set bStream = nothing 
+0

感謝您的回覆我不知道我將如何在上述代碼的上下文中使用它(轉換基礎64,然後傳遞要保存的圖像)。你能解釋還是展示一個完整的例子。再次感謝 – user2029541

+0

得到它的工作 - 作品輝煌謝謝 – user2029541

+0

@ user2029541 - 你能告訴我你是如何得到這個工作?我也試圖讓ASP/VBscript將base64保存到服務器上的映像文件。 - 謝謝! – tamak

-3

由於安全原因,您不能這樣做。如果網頁可以在沒有任何用戶交互的情況下隨機選擇在本地系統上存儲文件的位置,則會出現混亂。

+0

感謝您的答覆,我這樣做動態與圖片,所以我知道它的可能,只是不是從base64圖像,所以我需要代碼來轉換和保存ba se64作爲圖像 – user2029541

2

接收的base64字符串是下面的服務器端代碼,請注意,這是從取代碼一個工作系統,還有諸如carreg/auditdate變量用作給創建的文件名唯一標識符:

function convBase64 (convVal, getCarReg, convType, AuditDate, AuditReference) 
    base64String = convVal 
    carReg = (UCase(getCarReg)) 
    carReg = (Replace(getCarReg," ","")) 

    AuditDate= CDate(AuditDate) 
    ConvAuditDate = ((DatePart("d",AuditDate))& "_" & (DatePart("m",AuditDate)) & "_" & (DatePart("YYYY",AuditDate))) 

    select case convType 
     Case "Sig1" 
     FileNameSuffix = "AuditorsSignature" 
     Case "Sig2" 
     FileNameSuffix = "BodyShopSignature" 
     Case "Car" 
     FileNameSuffix = "DamageCanvas" 
    end select 
    ImageFileName = FileNameSuffix & "-" & carReg & "-" & ConvAuditDate & ".jpg" 

     Set tmpDoc = Server.CreateObject("MSXML2.DomDocument") 
     Set nodeB64 = tmpDoc.CreateElement("b64") 
     nodeB64.DataType = "bin.base64" ' stores binary as base64 string 
     nodeB64.Text = Mid(base64String, InStr(base64String, ",") + 1) ' append data text (all data after the comma) 


     dim bStream : set bStream = server.CreateObject("ADODB.stream") 
     bStream.type = 1 
     call bStream.Open() 
     call bStream.Write(nodeB64.NodeTypedValue) 
     call bStream.SaveToFile(Server.Mappath("NoneVehicleImages/" & AuditReference & "/" & ImageFileName), 2) 
     call bStream.close() 
     set bStream = nothing 
     convBase64 = "\\iis_fdg$\AuditExport\NoneVehicleImages\" & AuditReference & "\" & ImageFileName 
end function 
+0

謝謝....不能等待回到我的機器來測試它! – tamak

+0

非常好。這很好 – Mat41