問題描述
我有點(diǎn)卡在這里.我知道我可以使用 canvas.toDataURL 生成一個(gè) base64 編碼的字符串,以傳遞給我服務(wù)器上的經(jīng)典 ASP 頁面.但我似乎找不到答案的問題是如何處理這些數(shù)據(jù),以便我可以將其保存在我的服務(wù)器上的某個(gè)位置.
I'm a bit stuck here. I know that I can use the canvas.toDataURL to produce a base64 encoded string to pass to a classic ASP page on my server. But the problem I can't seem to find an answer to is how to process this data so I can save it someplace on my server.
因此,使用我的 HTML 頁面上的這段代碼,我提取了畫布數(shù)據(jù)(我從 StackOverflow 的另一篇文章中提取了這個(gè)):
So with this snippet of code on my HTML page, I pull the canvas data (I pulled this from another post here at StackOverflow):
var dataURL = renderedCanvas.toDataURL("image/png");
dataURL = dataURL.replace('data:image/png;base64,', '');
var areturn = $.ajax({
url: "http://127.0.0.1/mySite/saveImage.asp",
type: "POST",
data: '{ "imageData" : "' + dataURL + '" }',
dataType: "json",
beforeSend: function(x) {
x.overrideMimeType("application/j-son;charset=UTF-8");
}
}).done(function(result) {
console.log("Success Done!
" + result);
}).always(function(data) {
console.log("Always:
" + data.responseText);
});
但是我現(xiàn)在不清楚一旦我在服務(wù)器端如何處理數(shù)據(jù)......我可以提取 Request.Form 元素,但我似乎找不到任何 base64 解碼的好方法它,甚至將其輸出為二進(jìn)制文件...我想我聽說經(jīng)典的 ASP 不擅長進(jìn)行 base64 解碼,在另一個(gè)測(cè)試中我確實(shí)找到了一個(gè)可以進(jìn)行 base64 解碼的函數(shù),但我不能不知道它是否真的有效,但它確實(shí)需要很長時(shí)間才能運(yùn)行.我還在這里找到了這個(gè)鏈接:用于 ASP 經(jīng)典的 base64 圖像解碼器,但我猜這是微軟不推薦使用的 32 位組件……我想我正在向社區(qū)尋求有關(guān)將 html5 畫布圖像保存到服務(wù)器上的建議.
But I'm unclear now what to do with the data once I'm on the server side... I can pull the Request.Form element, but I can't seem to find a good way to either base64 decode it, or even output it as a binary file... I guess I've heard that classic ASP isn't any good at doing base64 decoding, and in another test I did find a function that did the base64 decode, but I couldn't tell if it really worked, but it did take a long time to run. I also found this link here: base64 image decoder for ASP classic, but I guess this is a 32bit component that Microsoft doesn't recommend using... I guess I'm looking to the community here for suggestions on saving out an html5 canvas image onto the server.
推薦答案
您可以使用通過 DomDocument
實(shí)例創(chuàng)建的指定 bin.base64
數(shù)據(jù)類型的 XML 元素來編碼/解碼 Base64 數(shù)據(jù).
然后,您可以使用 Stream
對(duì)象將獲得的二進(jìn)制文件保存到磁盤.
這兩個(gè)庫都支持 64 位.假設(shè)您發(fā)送的內(nèi)容將在服務(wù)器端的 Request 集合(沒有 json 的經(jīng)典 post 方法等)中可用,下面的代碼可以解決問題,或者在最壞的情況下,我相信這會(huì)給您帶來洞察力.
You could use an XML element specifying bin.base64
data type that created through a DomDocument
instance to encoding / decoding Base64 data.
Then you can save obtained binary to disk using a Stream
object.
Both of these libraries are 64 bit supported. Assuming the content you sent will be available in a Request collection (classic post methods without json etc.) on the server-side, following code solves the problem or at worst I'm sure that gives you insight.
saveImage.asp
Function Base64Data2Stream(sData)
Set Base64Data2Stream = Server.CreateObject("Adodb.Stream")
Base64Data2Stream.Type = 1 'adTypeBinary
Base64Data2Stream.Open
With Server.CreateObject("MSXML2.DomDocument.6.0").createElement("b64")
.dataType = "bin.base64"
.text = sData
Base64Data2Stream.Write .nodeTypedValue 'write bytes of decoded base64 to stream
Base64Data2Stream.Position = 0
End With
End Function
Dim CanvasStream
Set CanvasStream = Base64Data2Stream(Request.Form("imageData"))
'Write binary to Response Stream
'Response.BinaryWrite CanvasStream.Read
'Write binary to File
CanvasStream.SaveToFile Server.Mappath("imgFileFromCanvas.png"), 2 'adSaveCreateOverWrite
這篇關(guān)于如何使用經(jīng)典 ASP 保存畫布圖像?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!