Canvasで描いた絵をクラシックASPでサーバー上に保存する方法


このブログでCanvasについてよく扱っていたタイミングで、会社からCanvasを用いた編集ツールを作ることになりました。ただし、うちの会社で使っているサーバーは少し古めのIISで、現状サーバープログラミングはクラシックASPしか使えないようです。
ただ、Canvasで作った画像はサーバーに保存しなければいけないので、その方法を調べる必要がありました。Canvasの画像データ自体はBase64にして得られるものの、そのBase64の文字列をデコードしてファイルとして保存する必要があります。そこで見つけたのが、BASP21 DLLというASP上で扱えるコンポーネント。どうやら、Base64でファイルをデコードする機能もあるようです(わざわざ、Base64の文字列を入れたテキストファイルを作る必要があるようですが)。とりあえずやってみたものの、小さい画像ではうまくいきましたが、ちょっと大きくなるとダメでした(確か、200px*200pxぐらいだともうダメだったかと)。

正直ちょっと諦めかけて、LhaplusみたいなBase64デコード対応のソフトをWScript.Shellで操作するのがいいんじゃないか。なんて思っていた所、下記のサイトを発見。
ScrapCode/VBS/BASE64 – 備忘録
ASPはVBSで書かれているので、この方法でうまくいくかもしれません。なぜXMLを読み込んだり書き込んだりするためのMicrosoft.XMLDOMというオブジェクトでBase64のデコードができるのか謎なのですが、とりあえず試してみました。

以下、サンプルコード。

CanvasのHTMLは、前に作った、canvasを使ったお絵描き投稿システムを利用し、投稿先URLを、”image-accept.php”ではなく、”image-accept.asp”として試してみました。acceptImageというパラメータで、Canvasから得られたBase64 URLを渡すようにしています
結果、うまくいったようです。実際に使う時にはファイルパスとBase64の文字列を渡して、ファイルを作成する関数を作ったほうがいいかもしれませんね。