クラシックASPとVBScriptで作るファイルダウンロード用WebAPI

スポンサーリンク
Tips

当ブログでは以前にクラシックASPとVBScrptを使ってファイルをアップロードできるWebAPIのサンプルプログラムを紹介しましたが、

クラシックASPとVBScriptで作るファイルアップロード用WebAPI
今回はクラシックASP(Classic ASP)とVBScriptの利用したファイルアップロード用のWebAPIの作成方法を紹介します。 はじめに 自身の職場ではいまだにクラシックASPを使用した業務システムが稼働中であり、今回...

「アップロードできるならダウンロードもできないと」っと言うことで、今回は同じく「クラシックASP」と「VBScript」を使用してファイルをダウンロードできるWebAPIのサンプルプログラムを紹介します。

スポンサーリンク

はじめに

ブラウザを使わずにインターネットを介してファイルをダウンロードする処理は、前回紹介したファイルのアップロード処理よりも実装が容易で、かつ実装方法も色々とあります。

極端な実装方法だと、ウェブサーバーの公開されているディレクトリにダウンロードさせたいファイルを置いて、クライアントはそのファイルまでのURLを何らかの方法で叩くだけでもダウンロードをさせることができます。
ただ、それだと誰でもダウンロードできてしまい、また、例えば特定の条件でダウンロードさせるファイルを切り替えるといった高度な機能を持たせることはできません。

そういった作り込みまで考えると、やはりサーバー側で何らかのプログラムを動かしてダウンロード処理を実装することになります。

そんなサーバー側の処理をわざわざクラシックASPで作る必要はあまり無い気もしますが、敢えて今回もクラシックASPVBScriptの組み合わせで実装してみます。

作成するWebAPIの実装概要

  • サーバー側処理では「クラシックASPとVBScript」を使用する。※BASP21は使わない
  • ダウンロードするファイルはテキスト形式以外にも対応する。
  • ダウンロードするファイルは日本語のファイル名にも対応する。
  • クライアント側はVBScriptで作り、バッチ実行を可能とする。
  • クライアントはPOSTメソッドでサーバー側にパラメータを送信し、パラメータを受け取ったサーバーはパラメータを元に処理をする。
  • 認証などのセキュリティへの配慮はしていないので必要によって検討してください。

サンプルプログラム

当項では、サーバー側に配置するクラシックASPによるプログラムと、それを呼び出す為のVBScriptで作ったプログラムを紹介します。

サーバー側プログラム(クラシックASP)

サーバー側に配置するクラシックASPのプログラムを紹介します。
尚、当ASPファイルのファイル名は仮で「FileDownload.asp」とします。

処理解説

当プログラムでは、クライアントからパラメータがPOSTで渡されます。
渡されたパラメータの値によって、ダウンロードさせるファイルを変更したり、ダウンロード可否の認証をするような想定です。

サーバのEドライブには「DownloadedFiles」フォルダが作られており、IISの仮想ディレクトリ配下ではない非公開ディレクトリです。
そこに置いてあるファイルをダウンロードさせる処理になっています。
ダウンロードさせるファイルはbinary状態でStreamオブジェクトに格納してhttpレスポンスでクライアントに送信します。

httpヘッダ内にクライアントに送信するファイルのファイル名をセットしています。
ファイル名はURIエンコードをしており、日本語のファイル名でも送信できます。
もしクライアントからPOSTされたパラメータでも日本語が使われる可能性があるなら、「URI_Decode」関数でURIデコードも実施できます。

クライアント側プログラム(VBScript)

上記のASPファイルを実行する為のクライアント側プログラムを紹介します。
尚、当処理はVBScriptで作成していますが、httpを使ってPOSTしたりStreamが扱えれば他のプログラム言語にも置き換え可能です。※例えばVBAならURIデコードの処理だけ修正すればほぼコピペで動くと思います。
当VBSファイルのファイル名はなんでも結構です。

処理解説

Subルーチンの「DownloadFile」がメイン処理です。
あとはURIデコード用の関数も用意してあります。

httpリクエストをサーバーに投げる際のメソッドはPOSTを使用し、上記のプログラム例ではパラメータは一つですが、複数のパラメータを渡す際の記述方法もコメントアウトして記載しておいたので、状況に合わせて修正してください。

レスポンスで戻されたbinary状態のファイルをStreamオブジェクトに入れて、Streamオブジェクトを介して実ファイルとして保存しています。

httpヘッダ内に元のファイル名が入っているので、URIデコードしたうえで、保存時の物理ファイル名として使用しています。

最後に

今回はクラシックASPを使用したファイルのダウンロード用WebAPIの実装方法を紹介しました。
予想はしていましたが、前回記事にしたクラシックASPでファイルをアップロードするサンプルプログラムを紹介する投稿はあまりアクセス数が伸びなかったので、クラシックASPで実装するWebAPIはあまり需要はないのかも知れません・・・。
今回も同様にアクセス数はあまり見込めなさそうですが、それでもこの世の中のどこかで、クラシックASPでファイルのアップロードやダウンロードをさせるWebAPIを実装しないといけない状況に追い込まれている技術者が居るかも知れません。
クラシックASPで且つブラウザを使わないWebAPIとなると、2020年のインターネットではだいぶ情報も得難くなっているので、こんな記事でもどこかの誰かに役に立つこともあるだろうと信じて今回も記事にしました。

ここまで読んでいただきましてありがとうございました。
それでは皆さまごきげんよう。