久々にHSPをいじると楽しいですね。そんなに本格的なプログラムを組むわけじゃないので、どちらかというとtipみたいなミニスクリプトになってしまうのですが、参考になれば幸いです。
今回はFTP接続でファイルをアップロードするプログラムを考えてみようと思います。実は以前、とあるサイトを運営していたときに、そこで使っていたアップロードのスクリプトを思い出して、改めて作ってみようと思った次第です。
毎度毎度ですがHSPとは
Hot Soup Processor(ホットスーププロセッサー)は、1995年からおにたまにより開発されているプログラミングツール、およびそのプログラミング言語である。略称はHSP。最新安定バージョンは3.4。
HSPはベーシックライクなプログラムでホント手軽にWindowsなどのアプリケーションが作成できるので、ちょっとした作業用のプログラムを作るのによく利用しています。
HSPリファレンスでFTPをみてみる
HSPリファレンスでFTPを検索してみるとFTP関連の命令があっさりとヒット。まず、ftpopenを使ってFTPセッションを開始するみたいですね。対になる命令はftpclose。セッションの終了(クローズ)をすることでhttpなどの操作が行なえるようになります。以下、使用する主な命令をリファレンスより引用
FTPセッションの開始 ftpopen p1,p2,p3,p4,p5
p1 : ftpサーバーアドレス(文字列)
p2 : ftpログインユーザー名(文字列)
p3 : ftpログインユーザーパスワード(文字列)
p4 : ポート番号(省略可能)
p5 : PASSIVEモードフラグ(省略可能)FTPセッションの終了 ftpclose
FTPファイル送信 ftpput p1,p2,p3
p1 : サーバー上に作成するファイル名(文字列)
p2(“”) : ローカルから送信されるファイル名(文字列)
p3(0) : 転送モード(0=バイナリ/1=アスキー)(プラグイン / モジュール : hspinet)
単純なスクリプトなのでこんなものでしょうか。後、必要なものは
- ftpサーバーアドレス
- ログイン時のユーザー名
- 同上のパスワード名
- アップロードするファイル
を用意してくださいませ。ここではindex.htmlというアップロード用ファイルを用意しました。
【index.html】 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>HSPでアップロード</title> <link rel="stylesheet" href=""> </head> <body> <h1>HSPでFTPアップロードをしよう</h1> <p>無事に表示されればOK</p> </body> </html>
アップロード先のftpはそれぞれお使いのサーバーもしくはプロバイダの情報をみて確認してください。
スクリプトを組む
まず、hspinet.asをインクルードして、ネット接続の確認をし、できない場合はプログラム終了します。
#include "hspinet.as" netinit if stat : dialog "ネット接続できません。" : end
次にftpの接続先アドレス、ユーザー名、パスワードを設定します。
adr = "ftpサーバーアドレス" user= "ユーザー名" pass= "パスワード"
それぞれ対応するものを入力してくださいね。設定が終わったら、次はftp接続処理。まずセッション開始のためにftpopenを実行します。
ftpopen adr,user,pass
もし、接続エラーだった場合の処理を書いておきます。
if stat : dialog "ftp接続エラーです" : end
接続したら、そのことをウインドウに表示します。
mes "FTP接続しました"
アップロードの命令を記述し、エラーが出た場合の処理をしておきます。
ftpput "index.html" if stat : dialog "アップロードエラーです" : ftpclose : end
最後にアップロードしたことを表示して、FTPセッションを閉じます。
mes "アップロード完了しました" ftpclose stop
これで終了です。ただし、サーバーによっては、初期接続位置からディレクトリ移動しないといけない場合があるかもしれません。その場合にはftpdirをつかってFTPディレクトリ移動をしてアップロードの処理をしましょう。
ftpdir start_dir,"www"
実行するスクリプトと同じフォルダにindex.htmlファイルを置いて、実行してみましょう。実行したらアップロードしたアドレスにアクセスしてみてhtmlファイルの表示が出てれば成功です!
コード一覧
#include "hspinet.as" netinit if stat : dialog "ネット接続できません。" : end adr = "ftpサーバーアドレス" user= "ユーザー名" pass= "パスワード" ftpopen adr,user,pass if stat : dialog "ftp接続エラーです" : end mes "FTP接続しました" ftpdir start_dir,"www" ftpput "index.html" if stat : dialog "アップロードエラーです" : ftpclose : end mes "アップロード完了しました" ftpclose stop
*アドレスやユーザー名、パスワードなど適宜書き換えてください。
今回のまとめ
手軽にプログラムが書けるのが魅力のHSP。こんなに短いコードでもFTP接続、アップロード、セッション終了の処理ができてしまうんですから、すごいですよね。これを応用して、windowsのタスクスケジューラーで定期的に処理させれば、ほぼ自動でアップロードしてくれる仕組みが作れちゃったりしますよ。