上記の課題を解決する為に、請求項1のFTP型処理装置は、メディア接続部を備えたFTP型処理装置であり、ホスト装置からのネットワークを介したFTP通信によるコマンドに従い、前記メディア接続部に接続された記憶メディアに対し、少なくともファイル単位によるデータの読出し、書込みを行うFTPサーバ手段を備え、そのFTPサーバ手段は、所定のファイル名を持つファイルへのアクセス要求を受けたことを条件として、前記記憶メディアを単位とした操作に対応付けられた操作対応リンクを含んだデータを前記ホスト装置に送信する操作対応データ送信手段と、前記操作対応リンクへのアクセス要求を受けたことを条件として、操作対応リンクに対応する操作を実行する操作実行手段と、を備えることを特徴とする。
請求項2のFTP型処理装置は、前記記憶メディアを単位とした操作に対応付けられたURLを含んだハイパーテキストデータを前記ホスト装置に送信し、前記操作実行手段は、前記URLへのアクセス要求を受けたことを条件として、URLに対応する操作を実行することを特徴とする。
請求項3のFTP型処理装置は、所定のファイル名を持つファイルへのアクセス要求を受けたことを条件として、前記FTP型処理装置あるいは前記メディア接続部に接続された記憶メディアの状態に基づいて、前記記憶メディアを単位とした操作に対応付けられた操作対応リンクを含んだデータを作成する操作対応データ作製手段を備え、前記操作対応データ送信手段は、作製された操作対応データを前記ホスト装置に送信することを特徴とする。
請求項4のFTP型処理装置におけるFTPサーバ手段は、前記操作実行手段による操作実行状況を反映した実体データを決定し、実体データを前記ホスト装置に送信することを特徴とする。
請求項6のFTP型処理装置におけるFTPサーバ手段は、前記実体データへのリンクと共に、リンク先に関するキャッシュデータを削除するコマンドを含んだデータを前記ホスト装置に送信することを特徴とする。
請求項7のFTP型処理装置におけるFTPサーバ手段は、前記実体データへのリンクと、そのリンクへのリダイレクトを指示するリダイレクト指示データを前記ホスト装置に送信するFTPサーバ手段を備えることを特徴とする。
請求項8のFTP型処理装置におけるFTPサーバ手段は、前記実体データとともに前記リンクとは異なる、次の段階の操作実行状況を反映した次回実体データへのリンクとそのリンクへのリダイレクトを指示するリダイレクト指示データを前記ホスト装置に送信するFTPサーバ手段を備えることを特徴とする。
請求項9のFTP型処理装置は、複数のメディア接続部が設けられ、前記操作対応リンクは、いずれかの前記メディア接続部に接続された記憶メディアに対する操作に対応することを特徴とする。
請求項10のFTP型処理装置は、メディア接続部には種別の異なる記憶メディアを接続可能であり、前記操作対応リンクは、いずれかの種類の記憶メディアに対する操作に対応することを特徴とする。
請求項11のFTP型処理装置における前記操作対応リンクは、前記メディア接続部に接続された記憶メディア内のファイル名又はディレクトリ名を前記ホスト装置に送信する操作に対応することを特徴とする。
請求項12のFTP型処理装置における前記操作対応リンクは、前記メディア接続部に接続された記憶メディア内のファイルの実体データを前記ホスト装置に送信する操作に対応することを特徴とする。
請求項16のFTP型処理装置は、前記ネットワークを介して送信される印刷データに基づいて印刷を実行可能なネットワークプリンタに組み込まれてなることを特徴とする。
請求項17のFTPシステムは、ホスト装置と、メディア接続部を備え、前記ホスト装置からのネットワークを介したFTP通信によるコマンドに従い、前記メディア接続部に接続された記憶メディアに対し、少なくともファイル単位によるデータの読出し、書込みを行うFTPサーバ手段を備えたFTP型処理装置とからなり、前記FTP型処理装置は、所定のファイル名を持つファイルへのアクセス要求を受けたことを条件として、前記記憶メディアを単位とした操作に対応付けられた操作対応リンクを含んだデータを前記ホスト装置に送信する、操作対応データ送信手段と、前記操作対応リンクへのアクセス要求を受けたことを条件として、操作対応リンクに対応する操作を実行する操作実行手段と、を備え、前記ホスト装置は、所定のファイル名を持つファイルと、前記操作対応リンクへアクセスすることと、前記FTP型処理装置から送信された前記操作対応リンクを含んだデータを表示装置に表示することを特徴とする。
請求項18のFTPシステムは、請求項3のFTP型処理装置は、前記所定のファイル名を持つファイルへのショートカットファイルを記憶している前記ホスト装置を含むことを特徴とする。
請求項19のFTPシステムの操作方法は、メディア接続部を備え、前記ホスト装置からのネットワークを介したFTP通信によるコマンドに従い、前記メディア接続部に接続された記憶メディアに対し、少なくともファイル単位によるデータの読出し、書込みを行うFTPサーバ手段を備えたFTP型処理装置において、前記記憶メディアを単位とした操作に対応付けられた操作対応リンクを含んだデータを前記ホスト装置に送信し、前記操作対応リンクへのアクセス要求を受けたことを条件として、操作対応リンクに対応する操作を実行することを特徴とする。
請求項1のFTP型処理装置、請求項17のFTPシステム、請求項19のFTPシステムの操作方法によれば、FTP型処理装置にはFTPプロトコルに対応したFTPサーバが備えられており、ホスト装置にはFTPプロトコルに対応したFTPクライアントが備えられている。FTPサーバは、ネットワークを介したFTP通信によるFTPクライアントからのコマンドに従い、記憶メディアを単位とした操作に対応付けられた操作対応リンクを含んだデータをFTPクライアントへ送信する。FTPクライアントは、FTPサーバから送信されたデータをブラウザで開くことにより、メディアの状態を確認することができる。また、ファイルに含まれている操作対応リンク操作することにより、メディアそのものやメディアを単位とした操作を直接行うことができる。
すなわち、FTPプロトコルの拡張変更を行なうことなく、FTPプロトコルに準拠したクライアントからFTPサーバ上のメディアそのものやメディアを単位とした操作を直接行えるようにできる。
請求項2のFTP型処理装置によれば、ユーザが、FTPプロトコルに準拠したクライアントからFTPサーバ上のメディアそのものやメディアを単位とした操作を直接行えるようにできる。また、ハイパーテキストデータを用いることによって、よりユーザにわかりやすい形(色を用いる等)でメディア情報や操作手段を伝えることも可能となる。
請求項3のFTP型処理装置によれば、ユーザは、FTP処理装置がアクセス要求を受けた時点で操作可能な操作を知ることができる。そのため、操作不可能な操作をユーザが指定することによる不具合が発生しない。
請求項4のFTP型処理装置によれば、ユーザは、ユーザは、操作状況を記した実体ファイルを得ることができるため、FTP型処理装置の操作実行状況を知ることができる。
請求項5のFTP型処理装置によれば、ユーザは、操作状況を記した実体ファイルを得る為のリンクを知ることができるため、ユーザは、FTP型処理装置の操作実行状況を知ることができる。
請求項6のFTP型処理装置によれば、キャッシュデータを削除するコマンドを含んだデータを送信するため、ユーザは、キャッシュを保持するタイプのブラウザを用いて前記FTP型処理装置にアクセスした場合にも、ファイルを更新することができ、最新の状態のファイルを開くことができる。
請求項7のFTP型処理装置におけるFTPサーバ手段によれば、ホスト側で次の段階の操作実行状況を反映した次回実体データへと自動的にリダイレクトされるので、ユーザは自らリンクへのアクセス指示を行う手間無く操作実行状況を知ることができる。
請求項8のFTP型処理装置によれば、キャッシュ機能が働いているホストであっても、必ず新たな実体データをリダイレクトして取得しに行くので、ユーザは、必ず次の操作実行状況を知ることができる。
請求項11のFTP型記憶装置によればユーザは、操作対応リンクによって、FTP型処理装置に接続された記憶メディアのディレクトリ、ファイル構成を容易に把握/取得することができる。
請求項18のFTPシステムによれば、ブラウザにアドレスを入力する必要がなくなるため、ユーザはホスト側からFTP型処理装置に接続された記憶メディアへの状態確認や操作を容易に行うことができる。
以下、添付の図面を参照しつつ、本発明の実施形態について説明する。なお、以下に説明するFTPシステムの構成は、本発明を具現化するための単なる一例であり、本発明の要旨を変更しない範囲で構成を適宜変更できることは当然である。図1は、上記FTPシステム1の概略構成を示すブロック図である。FTPシステム1は、プリンタ80と、そのプリンタ80をネットワークプリンタとして使用するホスト装置(パーソナルコンピュータ:以下、「PC]ともいう)3とがネットワーク410にて通信可能にされている。
なお、ネットワーク410は、図示したような有線のネットワークでもよいし、無線のネットワークでもよい。
図2は、プリンタ80の外観構成を示すものである。前記プリンタ80は、いわゆる多機能装置(MFP:Multi Function Peripheral)であり、FTP型処理装置をなすマルチリーダライタ2をプリンタに組み込んだプリンタ複合機として構成されている。具体的には、装置前面にメディア接続用スロット(以下、単に「スロット」ともいう)16〜19が露出するように配設されたマルチリーダライタ2とを一体的に備えてなり、プリンタ機能、スキャナ機能、コピー機能及びファクシミリ機能などを有する。
なお、メディア接続用スロットに代えて、あるいは併設して、USB接続部を備え、記憶メディアとしてのUSBメモリが接続できる構成でもよいし、無線接続部を備え、記憶メディアとしての無線機能を持ったメモリーカードを接続できる構成でもよい。
プリンタ80は、PC3とネットワーク接続されて、PC3とマルチリーダライタ2に挿入されたメモリーカードとの間でデータ通信を行うリーダライタ装置として機能する。また、PC3(図1)から送信された印刷データに基づき、画像や文書を所定の用紙に印刷する。また、マルチリーダライタ2によってメモリーカード(記憶メディア)から読み取られた印刷データに基づいても、画像や文書を所定の用紙に印刷する(直接印刷)。また、スキャナ部により読み取られた画像データをPC3へ送信したり、スキャナ部で読み取った画像を、印刷部を用いてコピーしたりすることも可能である。
プリンタ80のマルチリーダライタ2は、図2に示すように、メディア接続用スロット16〜19として、第1メモリーカード11を挿入するための第1スロット16と、第2メモリーカード12を挿入するための第2スロット17と、第3メモリーカード13を挿入するための第3スロット18と、第4メモリーカード14を挿入するための第4スロット19とを備えている。また、その他のメモリーカード(xDピクチャーカード(登録商標、以下「XD」と略称する)など)のスロットを備える構成としてもよい。
図3は、上記プリンタ80の電気的構成を示すブロック図である。プリンタ80は、その内部に、各構成部を制御するCPU34と、制御プログラムや種々のデータ等を格納するROM35(本実施形態では、フラッシュメモリ等の不揮発性メモリにて構成している)と、CPU34による演算の作業領域となるRAM37と、がバス33を介して相互にデータ転送が可能なように接続されている。また、バス33には、フラッシュメモリ制御用LSIを介して各スロット16〜19が接続されている。これらスロット16〜19に着脱可能に接続される各第1〜第4メモリーカード11〜14は、例えば、CF、SM、MS、SDなど、データの書込み、書き換え、消去、読出しなどが可能なフラッシュメモリを搭載したカード型記憶メディアである。なお、上記のスロット16〜19は、いずれかの種類のメモリーカードを択一的に接続可能である。
バス33には、印刷部82、スキャナ部132、電話線I/F133、LCD、キーボード及びカーソル移動キーなどからなる操作・表示部91が繋がれている。さらに、バス33には、LANI/F24が接続されている。LANI/F24は、第一のネットワークを介してホスト装置であるPC3と接続している。複数のPC3及びプリンタ80はTCP/IPネットワーク410にて相互接続されている(図1参照)。
ROM35には、マルチリーダライタ2の動作制御プログラム及び、印刷制御、スキャン制御、FAX通信制御などを司る各々の制御プログラムが格納され、CPU34は、これらプログラムを、RAM37を実行エリアとして実行することで、プリンタ複合機としての総合的な動作制御を行なう。
ROM35にはさらに、FTPサーバプログラムが格納されている。また、TCP/IPネットワーク410上にてプリンタ80が特定されるためのIPアドレス及びサブネットマスクもROM35に記憶されている。さらに、前記記憶メディアの状態を送信する状態データ送信プログラムと、前記記憶メディアを単位とした操作に対応付けられた操作対応リンクを含んだデータを前記ホスト装置に送信する、操作対応データ送信プログラムもROM35に記憶されている。
メディア接続用スロット16〜19には、メモリーカード(記憶メディア)11〜14が接続される。また、PC3は、ハードディスクなどからなるローカルディスク3Lと、液晶ディスプレイなどからなるモニタ3Mとを備え、ローカルディスク3Lには、FTPクライアントプログラムが組み込まれたブラウザがインストールされている。
プリンタ80側では、前述した各々の制御プログラムと、状態反映ファイル名決定プログラム、及びFTPサーバプログラムが、CPU34で実行されることにより、FTPサーバ手段、操作対応ファイル名決定手段、操作実行手段、がシステム上で実現されている。
以下、通信システム1におけるデータシーケンスを、図4のシーケンス図を用いて説明する。このシーケンス図は、PC3側でユーザがFTPクライアント機能が組み込まれたブラウザを立ち上げ、プリンタ80のノード名「ftp://brn_600789」を入力し、アクセスを開始させたときに始まる。なお、PC3側にノード名「ftp://brn_600789」へのショートカットを用意しておき、そのショートカットを操作することで、ブラウザが起動後そのままプリンタ80へアクセスするよう構成していてもよい。プリンタ80のノード名「ftp://brn_600789」は適宜変更してもよい。
まず、PC3(FTPクライアント)はプリンタ80(FTPサーバ)にアクセスするために、FTPに割り当てられた21番ポートにてコネクトする(J1)。プリンタ80はPC3に対しユーザ名要求レスポンスを送信する(J2)。PC3はこれを受けてプリンタ80にFTPサーバにログインするためのユーザ名を送信する(J3)。
次に、プリンタ80からPC3にパスワード要求レスポンスを送信する(J4)。そして、そのパスワード要求レスポンスを受けたPC3からプリンタ80に、前期ホスト装置にて入力されたパスワードを送信する(J5)。プリンタ80では、受信したパスワードとユーザ名とに基づいてログインユーザを認証し、認証受理の場合にそのログインユーザのFTPサーバ(プリンタ80)へのログインを許可する応答をPC3へ返信する(J6)。
FTPサーバへのログインが許可されたPC3は、続いて、ルートディレクトリへのアクセスを要求するコマンド「cd/ (change directory root)」を発行する(J7)。
このコマンドを受信したプリンタ80は、ルートディレクトリへアクセスし(カレントディレクトリをルートディレクトリに変更することを試み)、成功したことを示すコードをPC3へ返信する(J8)。
なお、ルートディレクトリへのアクセスに失敗すれば、前述したようにレスポンスコード「550」などが返信されることになる。この実施形態では、記憶メディアが未接続の状態でも、ルートディレクトリへのアクセスが成功したことを示すコードをPC3へ返信するように工夫している。
ルートディレクトリへのアクセスが成功したことを示すコードを受信したPC3は、このルートディレクトリに対するlistコマンドを発行する(J9)。listコマンドを受信したプリンタ80は、メディア接続部の状態や、操作対応ファイル名決定プログラムによって決定された、操作対応ファイル名を有したファイルを含むディレクトリが、ルートディレクトリに存在している、との情報を送信する(J10)。
以下、フローチャート等を参照して、本発明の処理を説明する。
図23はインストーラによるショートカットの作成を示したフローチャートである。プリンタ80に対応するインストーラは、プリンタドライバなどのソフトウェアのインストールと同時に、FTPサーバ上のIndex.htmへのショートカットを作成する(S1800)。ショートカットを作成することにより、ユーザは、FTPサーバに接続する際に必要となるIPアドレスやパスワード等の入力を接続の度に行う煩雑さを解消することができる。
図24はショートカットを起動したときのPC3の処理を示したフローチャートである。ショートカットにはFTPサーバ上のIndex.htm等のURLが書かれており、ショートカットに書かれたURLを引数に与えてブラウザを起動することでプリンタ80に搭載されたFTPサーバに接続する。
図5は、プリンタ80におけるCPU34がFTPサーバプログラムに従って実行するFTPサーバ処理の動作フローである。FTPサーバ処理は、プリンタ80の起動に伴って動作が開始される。
図5で示すFTPサーバ処理では、まず、仮想ディレクトリツリーの初期化処理を実行し、FTPサーバ処理でCPUが管理するディレクトリツリーをRAMなどのメモリ上に形成する(S100)。続いて、FTPポートのオープンなど、FTPサーバとしてネットワーク機器と接続するための準備を行う(S110)。続いてFTPサーバとして、ファイルへのアクセス要求の受信、要求への応答などの定常動作処理を実行する(S120)。以降、プリンタ80の電源が切断されたり、リセットなどが行われるまで、定常動作し続ける。
図6は、S110における仮想ディレクトリツリーの初期化処理を詳細に示したフローチャートである。まず、CPU34は、仮想ディレクトリツリーの構成を管理するために必要なメモリ、FTPサーバシステムを管理するために必要なメモリをRAMなどに確保する(S200)。
続いて、確保したメモリ上の仮想ディレクトリツリーに、FTPサーバのルートディレクトリ用の管理領域を確保する(S210)。続いて、確保したルートディレクトリ用の管理領域を初期化する。ここでは、ディレクトリ名称がないこと、ディレクトリの実体は、先に述べたシステム領域に存在すること、ディレクトリ内に格納されたファイルのファイル名はない(すなわち、ディレクトリ内にファイルがない)こと、サブディレクトリはない、という属性を管理領域に設定する(S220)。
続いて、先に述べたルートディレクトリがカレントディレクトリであると認識し(S230)、仮想ディレクトリツリーの初期化処理を終了する。このように認識しておくことで、FTPサーバにアクセスしてきたFTPクライアント(以下、クライアントとも呼ぶ)が、「cd /」することなくlistコマンドを送信してきた場合でも、プリンタ80はカレントディレクトリであるルートディレクトリ内に存在するファイルのファイル名およびサブディレクトリ名を返信するようになる。
なお、図15(a)は、仮想ディレクトリツリーの初期化処理によって構成される仮想ディレクトリツリーを示す概念図である。
図7は、図5の(S120)における定常動作処理を詳細に示したフローチャートである。まず、FTPサーバとしての初期化が終了すると、CPU34はクライアントからのログイン(図4:J1参照)を待つログインウェイト状態になる(S300)。
続いて、クライアントからのログインリクエストがなければ(S310:NO)、再びログインウェイト状態になる。クライアントからのログインリクエストがあれば(S310:YES)、ログインシーケンスを実行し(S320)(図4:J2〜J5参照)、ログインシーケンスが失敗ならば(S330:NO)、再びログインウェイト状態になる。
ログインシーケンスが成功ならば(S330:YES)、クライアントにログイン成功を示すコードを送信し(図4:J6参照)、クライアントからのFTPコマンドを待つ、コマンドウェイト状態になる(S340)。
クライアントから「cd」コマンドがあれば(S350:YES)、コマンドに応じたcd処理を実行する(S360)。
クライアントから「list」コマンドがあれば(S370:YES)、コマンドに応じたlist処理を実行する(S380)。
クライアントから「get」コマンドがあれば(S390:YES)、コマンドに応じたget処理を実行する(S400)。
クライアントから「put」コマンドがあれば(S410:YES)、コマンドに応じたput処理を実行する(S420)。
クライアントからのその他のコマンドがあれば、その他のコマンドに応じた処理を実行する(S430)。
それぞれの処理を実行するか、クライアントからコマンドがなければ、プリンタ80のシャットダウン処理などで、プログラムを終了する指示がないか判断する(S440)。プログラムを終了する指示がなければ(S440:NO)、再びコマンドウェイト状態になり、プログラムを終了する指示があれば(S440:YES)、FTPサーバとしての機能を終了するシャットダウン処理を実行し(S450)、定常動作を終了する。
図8は、図7のS360におけるcd処理を詳細に示したフローチャートである。cd処理では、cdコマンドにより指定されたディレクトリを、カレントディレクトリとして認識する、換言すれば、カレントディレクトリを切り替える処理を行う。
まず、CPU34は、現在の装置状態に基づいて、仮想ファイル情報を作成する(S500)。続いて、対象とするディレクトリをコマンドが指定していれば(S510:YES)、クライアントからコマンドによって指定されたディレクトリが、仮想ディレクトリツリーの中に存在するか、あるいは、実体ディレクトリの中に存在するかを判断する(S520)。指定されたディレクトリが、仮想ディレクトリツリーの中に存在する、または実体ディレクトリの中に存在する場合(S520:YES)は、指定されたディレクトリをカレントディレクトリであると認識し(S530)、コマンドが成功したことを示すOKコードをクライアントに送信し(S540)、cd処理を終了する。
なお、FTPサーバ処理においては、カレントディレクトリが認識しなおされない限りは、cdコマンドで指定されたディレクトリがカレントディレクトリとして認識され続けることになる。
指定されたディレクトリが、仮想ディレクトリツリーの中に存在せず、かつ、実体ディレクトリの中に存在しない場合(S520:NO)、指定されたディレクトリをカレントディレクトリであると認識せず、コマンドが失敗したことを示すNGコードをクライアントに送信し(S550)、cd処理を終了する。
一方、S510で、対象とするディレクトリをコマンドが指定していなければ(S510:NO)、コマンドは、カレントディレクトリを指定しているものであると認識し(S560)、S530以降の処理を実行する。
図11は、図9のS380におけるlist処理を詳細に示したフローチャートである。list処理では、listコマンドにより指定されたディレクトリに存在するファイルのファイル名およびディレクトリのディレクトリ名を、クライアントに返信する、換言すれば、クライアントが指定したディレクトリ内のファイルおよびディレクトリのリストをクライアントに認識させる処理を行う。
まず、CPU34は、現在の装置状態に基づいて、仮想ファイル情報を作成する(S600)。続いて、対象とするディレクトリをコマンドが指定していれば(S610:YES)、クライアントからコマンドによって指定されたディレクトリが、仮想ディレクトリツリーの中に存在するか、あるいは、実体ディレクトリの中に存在するかを判断する(S620)。
続いて、CPU34は、指定されたディレクトリが、仮想ディレクトリツリーの中に存在するか、あるいは、実体ディレクトリの中に存在する場合(S620:YES)、さらに、指定されたディレクトリの実体がシステム領域内であるか否かを判断する(S630)。指定されたディレクトリの実体がシステム領域内ならば(S630:YES)、指定されたディレクトリ用の管理領域に記憶されたファイル名およびサブディレクトリ名をクライアントに送信し(S640)、list処理を終了する。
指定されたディレクトリの実体がシステム領域内でない、換言すれば、記憶メディアなどの記憶装置内にあるならば(S630:NO)、指定されたディレクトリに記憶されたファイル名およびサブディレクトリ名をクライアントに送信し(S650)、list処理を終了する。すなわち、記憶メディアなどに実際に記憶されているファイルおよびディレクトリのファイル名およびディレクトリ名を送信する。
指定されたディレクトリが、仮想ディレクトリツリーの中に存在せず、かつ、実体ディレクトリの中に存在しない場合(S620:NO)、コマンドが失敗したことを示すNGコードをクライアントに送信し(S660)、list処理を終了する。
一方、S610で、対象とするディレクトリをコマンドが指定していなければ(S610:NO)、コマンドは、カレントディレクトリを指定しているものであると認識し(S670)、S630以降の処理を実行する。
図10は、図7のS400におけるget処理を詳細に示したフローチャートである。get処理では、getコマンドにより指定されたファイルの実体データを、クライアントに返信する、換言すれば、クライアントが指定したファイルの実体データをクライアントに取得させる処理を行う。まず、CPU34は、現在の装置状態に基づいて、仮想ファイル情報を作成する(S700)。
続いて、対象とするファイルをコマンドが指定しているかどうかを判断する(S710)。対象とするファイルが指定されていれば、どこのディレクトリ内のファイルを対象としているか(対象とするディレクトリはどこか)をコマンドが指定しているかどうかを判断する(S720)。
対象とするディレクトリをコマンドが指定していれば(S720:YES)、クライアントからコマンドによって指定されたディレクトリが、仮想ディレクトリツリーの中に存在するか、あるいは、実体ディレクトリの中に存在するかを判断する(S730)。
指定されたディレクトリが、仮想ディレクトリツリーの中に存在するか、あるいは、実体ディレクトリの中に存在する場合(S730:YES)、さらに、指定されたディレクトリの実体がシステム領域内であるか否かを判断する(S740)。指定されたディレクトリの実体がシステム領域内ならば(S740:YES)、指定されたディレクトリ用の管理領域に記憶された情報に基づいて、メモリーカードの操作処理を行う(S750)。ファイルの実体データを取得できたならば(S760:YES)、クライアントに実体データを送信し(S770)、get処理を終了する。
ファイルの実体データを取得できなかったならば(S760:NO)、コマンドが失敗したことを示すNGコードをクライアントに送信し(S780)、get処理を終了する。
指定されたディレクトリの実体がシステム領域内でない、換言すれば、記憶メディアなどの記憶装置内であるならば(S740:NO)、指定されたディレクトリに記憶されたファイルの実体データを取得し(S790)、S760以降の処理を実行する。すなわち、記憶メディアなどに実際に記憶されているファイルの実体データを送信する。
指定されたディレクトリが、仮想ディレクトリツリーの中に存在せず、かつ、実体ディレクトリの中に存在しない場合(S730:NO)、コマンドが失敗したことを示すNGコードをクライアントに送信し(S780)、get処理を終了する。
一方、S720で、対象とするディレクトリをコマンドが指定していなければ(S720:NO)、コマンドは、カレントディレクトリ内のファイルを対象として指定しているものであると認識し(S800)、S740以降の処理を実行する。また、対象とするファイルをコマンドが指定していなければ(S710:NO)、コマンドが失敗したことを示すNGコードをクライアントに送信し(S780)、get処理を終了する。
図11は、図9のS420におけるput処理を詳細に示したフローチャートである。put処理では、クライアントからputコマンドにより送信されたファイルの実体データを、FTPサーバ内の記憶装置に記憶する、換言すれば、クライアントが指定したファイルの実体データをFTPサーバに書き込ませる処理を行う。
まず、CPU34は、現在の装置状態に基づいて、仮想ファイル情報を作成する(S900)。続いて、ファイルを記憶するディレクトリ(対象とするディレクトリ)をコマンドが指定しているかどうかを判断する(S910)。対象とするディレクトリをコマンドが指定していれば(S910:YES)、クライアントからコマンドによって指定されたディレクトリが、仮想ディレクトリツリーの中に存在するか、あるいは、実体ディレクトリの中に存在するかを判断する(S920)。指定されたディレクトリが、仮想ディレクトリツリーの中に存在するか、あるいは、実体ディレクトリの中に存在する場合(S920:YES)、さらに、指定されたディレクトリの実体がシステム領域内であるか否かを判断する(S930)。指定されたディレクトリの実体がシステム領域内ならば(S930:YES)、コマンドが失敗したことを示すNGコードをクライアントに送信し(S960)、put処理を終了する。すなわち、FTPクライアントにFTPサーバ側の状態を知らせる情報の内容と接続されている記憶メディアに対してFTPクライアントが行うことのできる操作を知らせ、記憶メディアに対して操作させるためのhtmlデータのファイル名をクライアントに送信するために設けられた、仮想的な特別なディレクトリへのアクセスができないようにする。これにより、PC3のユーザがファイルの実体データを書き込んだと思ったにもかかわらず、ディレクトリが仮想的なために書き込まれていなかった、という事態を防ぐことができる。
指定されたディレクトリの実体がシステム領域内でない、換言すれば、記憶メディアなどの記憶装置内であるならば(S930:NO)、指定されたディレクトリに実体データを記憶させ(S940)、コマンドが成功したことを示すOKコードをクライアントに送信し(S950)、put処理を終了する。すなわち、記憶メディアなどに実際に実体データを記憶する。一方、指定されたディレクトリが、仮想ディレクトリツリーの中に存在せず、かつ、実体ディレクトリの中に存在しない場合(S920:NO)、コマンドが失敗したことを示すNGコードをクライアントに送信し(S960)、put処理を終了する。
一方、対象とするディレクトリをコマンドが指定していなければ(S910:NO)、コマンドは、カレントディレクトリ内のファイルを対象として指定しているものであると認識し(S970)、S930以降の処理を実行する。
図12A、図12Bは、図8、図9、図10、図11における仮想ファイル情報の作成処理を詳細に示したフローチャートである。
仮想ファイル情報の作成処理では、FTPクライアントが閲覧するIndex.htmの作成とMain.htmの内容を決定する、換言すれば、FTPクライアントにFTPサーバ側の状態を知らせる情報の内容と接続されている記憶メディアに対してFTPクライアントが行うことのできる操作を決定する処理を行う。
また、ここで、プリンタ80の状態や、メディア接続部に接続された記憶メディアの状態を確認することから、メディア接続部に別の記憶メディアが接続されなおされていても、新たな記憶メディアの状態を反映できることから、操作対応ファイル名が接続されているメモリーカードに対応するため、誤った操作を選択することが少なくなる。
ここで、処理の説明に戻る。
CPU34は、まず、Index.htmとMain.htmを作成する。
Index.htmは、ftp://brn_600789/Main.htmへの転送コマンド(リダイレクト)が記載されている。これによって、Index.htmにアクセスすることで、Main.htmへと移動することが可能となる。
また、Index.htmには、ftp://brn_600789/Main.htmのキャッシュ削除コマンドも記述されている。ブラウザの中には一度アクセスしたhtmlファイルをキャッシュとして保持するものがある。こうしたブラウザを利用する場合、以前にアクセスしたhtmlファイルがキャッシュとして残ってしまうため、更新されたhtmlファイルが表示されない場合がある。更新したhtmlファイルを表示するためにはキャッシュ削除を削除する必要があるため、キャッシュ削除コマンドを用いる。生成されたIndex.htmファイルの表示例を図13に示す。
また、生成された段階では、Main.htmの内容は空であり、以降の処理に従ってFTPサーバが動的に内容を記述する。
続いて、CPU34は、プリンタ80の状態をチェックする(S1020)。プリンタ80が備えるメディア接続部の数や、メディア接続部に接続可能な記憶メディアの種類に関する情報も、この時取得する。
続いて、CPU34は、変数Nに0を代入する(S1030)。このNは、メディア接続部全てについての情報を確認するためにプログラム内で使われる変数である。
続いて、CPU34は、Nをメディア接続部の数と比較する(S1040)。Nがメディア接続部の数より少なければ(S1040:NO)、CPU34は、N番目のメディア接続部(以降、第Nスロットとも称する)に記憶メディアが接続されているかどうか確認する(S1110)。
第Nスロットに記憶メディアが接続されていれば(S1110:YES)、続いて、記憶メディアがフォーマット済みであるかどうかを確認する(S1120)。
第Nスロットの記憶メディアがフォーマット済みであれば(S1120:YES)、続いて、CPU34は、第Nスロットに接続された記憶メディアが開ける状態にあるかどうかを確認する(S1130)。
第Nスロットに接続された記憶メディアが開ける状態にあるならば(S1130:)、続いて、CPU34は、第Nスロットに接続された記憶メディアの総記憶容量と残り記憶容量を確認する(S1200)。
続いて、CPU34は、Main.htmに書き出すスロットの状態を決定する(S1150)。書き出す状態は、対応カード名、総記憶容量、残り記憶容量、フォーマットを開始するためのリンク、カードを開くためのリンクとなる。
続いて、再びS1040に戻り、プリンタ80のメディア接続部全てについて確認が終了する(S1040:YES)までS1040〜S1150における一連の処理を繰り返す。
プリンタ80のメディア接続部全てについて確認が終了したならば(S1040:YES)、全てのメディア接続部に関する状態を確認したことになるため、繰り返しから抜ける。
繰り返しから抜けた後、まずCPU34は、スロットの数を確認する(S1205)。認識したスロットが1つだけの場合(S1205:YES)、スロットの状態にカードを開くためのリンクが存在するかどうかを確認する(S1210)。
スロットの状態にカードを開くためのリンクが存在した場合、(S1210:YES)CPU34は、カードを開くためのリンクを用いてMain.htmに転送コマンドを書き出す(S1215)。スロットの状態にカードを開くためのリンクが存在した場合の画面表示例を図14A(a−1)、図14A(a−2)に示す。図14A(a−1)が、Main.htmの例であり、図14A(a−2)がMain.htmに書かれた転送コマンドに従ってブラウザがカードを開いた状況を示している。
続いて、CPU34は、転送コマンドが示す転送先のキャッシュ削除コマンドをMain.htmに書き出す(S1220)。
続いて、CPU34は、ルートディレクトリ用の管理領域の情報を更新する(S1270)。具体的には生成したIndex.htm、Main.htmをルートディレクトリに追加する。
CPU34は、管理領域の情報を更新した後、仮想ファイル情報の作成処理を終了する。
また、スロットの状態にカードを開くためのリンクが存在しない場合、(S1210:NO)CPU34は、Main.htmにスロットの状態を書き出した(S1265)後、ルートディレクトリ用の管理領域の情報を更新して(S1270)、仮想ファイル情報の作成処理を終了する。スロットの状態にカードを開くためのリンクが存在しない場合として、メモリーカードが未フォーマットである、もしくは接続されていないなどが考えられる。画面表示例を図14B(b−1)、図14B(b−2)に示す。
一方、認識したスロットが複数の場合(S1205:NO)、CPU34は準備した変数Xに0を代入する(S1225)。
続いて、CPU34はXとNを比較する。XがNより小さい場合(S1230:NO)、スロットの状態にカードを開くためのリンクが存在するかどうかを確認する(S1235)。
スロットの状態にカードを開くためのリンクが存在した場合、(S1235:YES)CPU34は、カードを開くためのリンクを用いてCardOpenX.htm(Xには変数Xの値が入る)に転送コマンドを書き出す(S1215)。
続いて、CPU34は、転送コマンドが示す転送先のキャッシュ削除コマンドをCardOpenX.htmに書き出す(S1245)。
続いて、CPU34は、Main.htmにスロットの状態を書き出した(S1265)後、ルートディレクトリ用の管理領域の情報を更新して(S1270)、仮想ファイル情報の作成処理を終了する。
認識したスロットが複数の場合の表示例を図14C(c−1)〜図14C(c−3)に示す。図14C(c−1)の「メモリーカードを開く」がブラウザ上でクリックされると、カードにアクセスするための転送コマンドが書かれたページが暫く表示され、続いてカードの内容がブラウザに表示される(図14C(c−2)、図14C(c−3)を参照)。
図15(b)は仮想ファイル情報の作成処理実行後の仮想ディレクトリツリーを示す概念図である。ルートディレクトリの中にはファイルとしてIndex.htm、Main.htmが含まれており、各メディア接続部がディレクトリとして扱われていることがわかる。
図16(a)は仮想ファイル情報の作成処理実行後のシステム領域を示す概念図である。システム領域の中にファイルとしてIndex.htm、Main.htm、CardOpen1.htmが含まれていることがわかる。
図17は図10のS750におけるメモリーカード操作処理を示したフローチャートである。メモリーカード操作処理では指定されたファイルに従ってメモリーカードの操作(フォーマット、メモリーカード内のファイルの削除等)を行う。
指定されたファイルがIndex.htmであった場合(S1300:YES)、CPU34はIndex.htmを取得し(S1300)、メモリーカード操作処理を終了する。Index.htm取得処理に限らず、メモリーカード操作処理で取得されたファイルの実体は、S770にてクライアントに送信される。
指定されたファイルがFormat000.htmであった場合(S1320:YES)、CPU34はFormat000.htmが要求された場合のFTPサーバの処理を実行し(S1330)、Format000.htmを取得後(S1340)、メモリーカード操作処理を終了する。Format000.htmの表示例を図20に示す。
指定されたファイルがFormatN.htm(Nには変数Nの値が入る。ここで用いられる変数Nは仮想ファイル情報の作成で用いられた変数Nとは異なる変数である。)であった場合(S1350:YES)、CPU34はFormatN.htmが要求された場合のFTPサーバの処理を実行し(S1360)、FormatN.htmを取得後(S1370)、メモリーカード操作処理を終了する。
指定されたファイルがMain.htmであった場合(S1380:YES)、CPU34はMain.htmを取得し(S1390)、メモリーカード操作処理を終了する。
指定されたファイルがIndex.htm、FormatN.htm、Main.htmのいずれにも当てはまらなかった場合(S1380:NO)、CPU34は指定のディレクトリ用の管理領域に記憶された情報に基づいてファイルの実体を取得し(S1400)、メモリーカード操作処理を終了する。
図18は図17のS1330におけるFormat000.htmが要求された場合のFTPサーバの処理を詳細に示したフローチャートである。まず、CPU34は、メモリーカードのフォーマットを開始する(S1500)。
続いて、CPU34は、Format000.htmの内容を決定する(S1510)。Format000.htmの内容として決定されるのは、フォーマットの進行状況(0%)を示すメッセージと、FormatN.htmを表示するための転送コマンドと、FormatN.htmを更新するためのキャッシュ削除コマンドである。
続いて、CPU34は、Format000.htmを作成し(S1520)、フォーマットの進行度を示す変数Nを1に設定(S1530)した後、Format000.htmが要求された場合のFTPサーバの処理を終了する。
図19は図17のS1360におけるFormatN.htmが要求された場合のFTPサーバの処理を詳細に示したフローチャートである。NはS1530で設定された変数であり、フォーマットの進行によって変化する。まず、CPU34は、メモリーカードのフォーマットを開始する(S1500)。
続いて、CPU34は、確認したメモリーカードがフォーマット済みもしくはフォーマットが終了した場合(S1610:YES)、FormatN.htmの内容を決定する(S1620)。FormatN.htmの内容として決定されるのは、フォーマットの進行状況(100%)を示すメッセージである。続いて、CPU34は、FormatN.htm を作成し(S1630)、FormatN.htmが要求された場合のFTPサーバの処理を終了する。
一方、フォーマットが終了していない場合(S1610:NO)、CPU34は、FormatN.htmを作成し(S1630)、フォーマットの進行度を示す変数Nを1に設定した後、S1610の処理に戻り、フォーマットが終了するまで繰り返す。FormatN.htmの表示例を図21(a)〜(c)に示す。変数Nの増加とともに進行度が増加していくのがわかる。FormatN.htm転送するタイミングは適宜決定してもよい。
図16(b)はFormat000.htm〜FormatN.htmが要求された場合のFTPサーバの処理実行後のシステム領域を示す概念図である。システム領域の中にファイルとしてFormat000.htm、FormatN.htm等が含まれていることがわかる。図には記されていないが、システム領域には、Format000.htmからFormat001.htm、Format002.htm、Format003.htm…と順次生成される。
図22はメモリーカード接続部(スロット)の監視処理を示したフローチャートである。スロットの監視はFTPサーバとは独立した処理であるが、常にスロットの状態をFTPサーバに伝達している。
まず、CPU34はスロットの増減または、カードの接続/離脱を確認する(S1700)。スロットの増減や、カードの接続/離脱が確認された場合(S1700:YES)、CPU34はカレントディレクトリの実体ディレクトリが存在するかどうかの確認を行う(S1710)。カードの接続/離脱が確認されなかった場合(S1700:NO)、CPU34はスロットの増減や、カードの接続/離脱が確認されるまで、待つこととなる。
カレントディレクトリの実体ディレクトリが存在した場合、(S1710:YES)CPU34は、S1700の処理に戻る。
一方、カレントディレクトリの実体ディレクトリが存在しなかった場合、(S1710:NO)CPU34は、ルートディレクトリをカレントディレクトリであると認識して、S1700の処理に戻る。
図25はPC3におけるブラウザの定常動作の処理を示したフローチャートである。まず、PC3はブラウザの起動処理(S2000)を行う。
続いて、ブラウザはファイルへのリンクがクリックされたかどうか確認する(S2010)。クリックされたことが確認されれば、ブラウザは、ファイルへのリンクをクリックされたときのブラウザの処理を実行し(S2070)、ブラウザの終了指示があるかどうかを確認する(S2050)。
ブラウザの終了指示があった場合(S2050:YES)、ブラウザの終了処理(S2060)を実行し、ブラウザの定常動作を終了する。
一方、ファイルへのリンクがクリックされなかった場合(S2010:NO)、ブラウザは、ディレクトリへのリンクがクリックされたかどうかを確認する(S2020)。クリックされたことが確認されれば(S2020:YES)、ブラウザは、ディレクトリへのリンクをクリックされたときのブラウザの処理を実行し、S2050の処理に移る。
一方、ディレクトリへのリンクがクリックされなかった場合(S2020:NO)、ブラウザは、表示しているhtmlファイルに転送コマンドが書かれているかどうかの確認を行う(S2030)。転送コマンドが書かれていることが確認されれば(S2030:YES)、ブラウザは、転送処理を実行し(S2090)、S2050の処理に移る。
図26は図25のS2000におけるブラウザの起動処理を示したフローチャートである。まず、ブラウザは、引数にファイルを指定されたかどうかの判定を行う(S2100)。引数にファイルを指定された場合(S2100:YES)、ブラウザは、ファイルへのリンクをクリックされたときのブラウザの処理を実行し、起動処理を終了する。
引数にファイルを指定されなかった場合(S2100:NO)、ブラウザは引数にディレクトリを指定されたかどうかの判定を行う(S2110)。引数にディレクトリを指定された場合(S2110:YES)、ブラウザは、ディレクトリへのリンクをクリックされたときのブラウザの処理を実行し、起動処理を終了する。
引数にディレクトリを指定されなかった場合(S2110:NO)、ブラウザはブラウザのホームページに設定されているhtmlファイルをサーバに要求する(S2120)。
続いて、ブラウザは、ブラウザのホームページに設定されているhtmlファイルを取得できたかどうかの判定を行う(S2130)。htmlファイルを取得できた場合(S2130:YES)、ブラウザは、取得したhtmlファイルを表示して(S2140)起動処理を終了する。
ブラウザのホームページに設定されているhtmlファイルを取得できなかった場合(S2130:NO)ブラウザはhtmlファイルが取得できるまで待つことになる。
図27は図26のS2150におけるファイルへのリンクをクリックされたときのブラウザの処理を示したフローチャートである。まず、ブラウザは、リンクに書かれたファイルをFTPサーバに要求する(S2200)。続いて、ブラウザはファイルを取得できたかどうかの確認を行う(S2210)。
ファイルが取得できた場合(S2210:YES)、ブラウザは、取得したファイルを表示してファイルへのリンクをクリックされたときのブラウザの処理を終了する。
ファイルが取得できなかった場合(S2210:NO)ブラウザはファイルが取得できるまで待つこととなる。
図28は図26のS2160におけるディレクトリへのリンクをクリックされたときのブラウザの処理を示したフローチャートである。まず、ブラウザは、リンクに書かれたディレクトリのファイルリストをFTPサーバに要求する(S2300)。
ファイルリストが取得できた場合(S2310:YES)、ブラウザは、取得したファイルリストを表示してディレクトリへのリンクをクリックされたときのブラウザの処理を終了する。
ファイルリストが取得できなかった場合(S2310:NO)ブラウザはファイルリストが取得できるまで待つこととなる。
図29は、図25のS2090における転送処理を示したフローチャートである。まず、ブラウザは、表示しているhtmlファイルにキャッシュ削除コマンドが記述されているかどうかの確認を行う(S2400)。
htmlファイルにキャッシュ削除コマンドが記述されていれば(S2400:YES)、ブラウザは、転送先のキャッシュを削除する(S2410)。htmlファイルにキャッシュ削除コマンドが記述されていなければ(S2400:NO)、ブラウザは、転送先の確認を行う(S2420)。
続いて、ブラウザは、転送先の確認を行う(S2420)。転送先がディレクトリであれば(S2420:YES)、ブラウザはhtmlファイルに書かれた転送コマンドに従い、転送先のディレクトリのファイルリストをサーバに要求(listコマンド)する(S2430)。
続いてブラウザはファイルリストが取得できたかの確認を行う(S2440)。ファイルリストが取得できた場合(S2440:YES)ブラウザは取得したファイルリストを表示(S2450)して転送処理を終了する。ファイルリストが取得できなかった場合(S2440:NO)、ブラウザは、ファイルリストが取得できるまで待つことになる。
一方、転送先がディレクトリで無かった場合(S2420:NO)、ブラウザはhtmlファイルに書かれた転送コマンドに従い、転送先のファイルをサーバに要求(getコマンド)する(S2460)。
続いて、ブラウザはファイルが取得できたかどうかの確認を行う(S2470)。ファイルが取得できた場合(S2470:YES)ブラウザは取得したファイルを表示(S2480)して転送処理を終了する。ファイルが取得できなかった場合(S2470:NO)、ブラウザは、ファイルが取得できるまで待つことになる。
なお、FTP型処理装置の例として、プリンタ80を示したが、スキャナ装置、ディスプレイ装置、オーディオ装置、カラオケ装置、デジタルカメラ装置、プロジェクタ装置、ディスクドライブ装置、ミシン、電話機、モバイル装置、工作用装置、ロボットなど、FTPサーバ機能を有し、メディア接続部を持ちうる構成の装置であればいずれに適用しても良いことは明らかである。