(第1実施例)
(通信システムの構成)
図1に示されるように、通信システム2は、仲介サーバ10と、複数個のMFP(多機能機:Multi-Function Peripheralの略)100,200と、複数個のサービス提供サーバ300,310と、を備える。仲介サーバ10とMFP100,200と複数個のサービス提供サーバ300,310とは、それぞれインターネット4に接続されている。
(仲介サーバ10の構成)
仲介サーバ10は、MFP100,200からサービス提供サーバ300,310へのデータファイルのアップロード及びサービス提供サーバ300,310からMFP100,200へのデータファイルのダウンロードを仲介するためのサーバである。仲介サーバ10は、MFP100,200のベンダによって提供されるサーバである。仲介サーバ10は、ネットワークインターフェイス12と、制御部20と、を備える。ネットワークインターフェイス12は、インターネット4に接続される。制御部20は、CPU22と、メモリ30と、を備える。CPU22は、メモリ30に格納されているプログラム26に従って、様々な処理を実行する。
メモリ30は、アップロード管理データベース32を格納している。アップロード管理データベース32は、MFP100,200がサービス提供サーバ300,310に、データファイルのアップロードを実行する際に、仲介サーバ10が、アップロードを管理するために利用される。アップロード管理データベース32には、アップロード識別情報とカウント値との組合せが格納される。
(MFP100の構成)
MFP100は、印刷機能、スキャン機能、コピー機能、FAX機能等の多機能を実行可能である。MFP100は、MFP100がスキャンすることによって生成されるスキャンデータファイル(例えばJPEG(Joint Photographic Experts Groupの略)形式のデータファイル)を、サービス提供サーバ300,310にアップロードするスキャンアップロード機能を実行可能である。また、MFP100は、例えばUSBメモリ、CD−ROM等の外部メモリに格納されているデータファイル(例えば、デジタルカメラ等で撮像された写真を表すデータファイル)を、サービス提供サーバ300,310にアップロードするメモリアップロード機能を実行可能である。以下では、スキャンアップロード機能とメモリアップロード機能とを合わせて「UL機能」と呼ぶ。また、スキャンアップロード機能をスキャンUL機能と呼び、メモリアップロード機能をメモリUL機能と呼ぶ。MFP100は、さらに、サービス提供サーバ300に保存されている画像データをダウンロードして、当該画像データによって表わされる画像を印刷するダウンロード印刷機能を実行可能である。
MFP100は、ネットワークインターフェイス102と、スキャン実行部104と、データ読取部106と、操作部108と、表示部110と、印刷実行部112と、制御部120と、を備える。ユーザは、複数のキーを備える操作部108を操作することによって、様々な指示をMFP100に入力することができる。表示部110は、様々な情報を表示するためのディスプレイである。ネットワークインターフェイス102は、LAN6に接続されている。MFP100は、LAN6を介して、インターネット4に接続される。印刷実行部112は、インクジェット方式、レーザ方式等の印刷機構である。スキャン実行部104は、CCD、CIS等のスキャン機構である。データ読取部106は、データ読取部106にセットされたUSBメモリ、CD−ROM等の外部メモリに格納されているデータファイルを読み取る。MFP100には、MACアドレス「M100」が付与されている。制御部120は、CPU122と、メモリ124と、を備える。
CPU122は、メモリ124に格納されているプログラム126に従って、様々な処理を実行する。プログラム126は、ウェブブラウザプログラムを含む。CPU122は、時刻を計時している。CPU122は、MFP100が設置されている地域の時刻を計時する。
なお、MFP200は、MFP100と同様の構成を有する。MFP200には、MACアドレス「M200」が付与されている。
(サービス提供サーバ300等の構成)
複数個のサービス提供サーバ300等は、例えば、「Evernote(登録商標)」、「Google(登録商標) Docs」、「PICASA(登録商標)」、「FACEBOOK(登録商標)」等の公知のクラウドサーバである。複数個のサービス提供サーバ300等のそれぞれは、MFP100,200を含む様々な通信機器にサービスを提供可能である。例えば、サービス提供サーバ300は、MFP100がダウンロード印刷機能を実行するために、MFP100に画像データファイルを供給する画像供給サービスを実行可能である。また、例えば、サービス提供サーバ300は、MFP100がUL機能を実行するために、MFP100から取得される画像データファイルを保存する画像保存サービスを実行可能である。
各サービス提供サーバ300,310には、データファイルを格納する1個以上のフォルダが格納されている。各フォルダには、固有のフォルダ名とフォルダIDとが付与されている。
なお、サービス提供サーバ300は、第1のサービス事業者(即ち第1の会社)によって提供されるサーバである。サービス提供サーバ310は、第1のサービス事業者とは異なる第2のサービス事業者(即ち第2の会社)によって提供されるサーバである。第1のサービス事業者は、サービス提供サーバ300からサービスを受けるための第1のAPI(Application Program Interface)を公開しており、第2のサービス事業者は、サービス提供サーバ310からサービスを受けるための第2のAPIを公開している。第1のサービス事業者と第2のサービス事業者とが異なるために、通常、第1のAPIと第2のAPIとは異なる。通信機器は、例えば、サービス提供サーバ300,310の両方からサービスを受けるためには、第1及び第2のAPIの両方に対応している必要がある(即ち、第1のAPIを利用するためのプログラムと、第2のAPIを利用するためのプログラムと、の両方が必要である)。
例えば、MFP100が複数個のサービス提供サーバ300,310のそれぞれからサービスを受けるためには、MFP100は、複数個のAPIに対応している必要があり、多くのプログラムを格納する必要がある。しかしながら、PC等と比べると、MFP100のメモリ容量は少ない。従って、本実施例では、MFP100に多くのプログラムを格納させることなく、MFP100が複数個のサービス提供サーバ300,310のそれぞれからサービスを受けることができるように、仲介サーバ10が設けられている。即ち、仲介サーバ10は、複数個のサービス提供サーバ300,310のための複数個のAPIに対応している。そして、MFP100が、複数個のサービス提供サーバ300,310のうちの特定のサービス提供サーバ(例えばサービス提供サーバ300)からサービスを受けるために、仲介サーバ10は、特定のサービス提供サーバのためのAPIを利用して、特定のサービス提供サーバと後述の様々な通信を実行する。これにより、MFP100は、特定のサービス提供サーバのためのAPIに対応していなくても、特定のサービス提供サーバと画像データの通信を実行することができる。即ち、MFP100は、複数個のAPIを利用するための多くのプログラムを格納していなくても、複数個のサービス提供サーバ300,310のそれぞれからサービスを受けることができる。
(MFP100のユーザの事前準備)
MFP100のユーザ(以下では「特定のユーザ」と呼ぶ)は、MFP100が各サービス提供サーバ300,310からサービスを受けるために、以下の事前準備を実行する必要がある。特定のユーザは、例えば、PC、PDA端末(例えばスマートフォン)等を利用して、各サービス提供サーバ300,310にアカウントを作成する。これにより、各サービス提供サーバ300,310は、特定のユーザにアクセストークン(一般的に言うと「認証情報」)を与える。特定のユーザは、各サービス提供サーバ300,310から与えられた各アクセストークンと、各サービス提供サーバ300,310の識別情報(例えばサービス提供サーバ名)とを関連付けて、MFP100に登録する。なお、特定のユーザは、PC、PDA端末等を利用して、様々なデータファイル(例えば画像データファイル)を各サービス提供サーバ300,310にアップロードすることができる。また、特定のユーザは、PC、PDA端末等を利用して、特定のユーザ自身がアップロードした様々なデータファイルをダウンロードすることもできる。
(UL機能が実行される際の仲介サーバ10が実行するアップロード仲介処理;図2)
続いて、図2を参照して、MFP100がUL機能を実行する際に、仲介サーバ10が実行するアップロード仲介処理の内容を説明する。アップロード仲介処理は、仲介サーバ10が、インターネット4を介して、MFP100,200等の通信機器から複数の要求及びアップロード結果のいずれかの情報を受信すると開始される。以下では、MFP100が、仲介サーバ10に情報を送信する場合を例にして説明を続ける。特定のユーザは、表示部110に表示された選択画面に従って、MFP100の操作部108を操作して、どのサービス提供サーバにデータファイルをアップロードするのかを選択する。本実施例では、特定のユーザによってサービス提供サーバ300が選択された場合を例として、説明を続ける。
特定のユーザは、さらに、操作部108を操作して、MFP100が実行可能な複数の機能の中から、スキャンUL機能又はメモリUL機能(以下では、スキャンUL機能とメモリUL機能とを総称して、「UL機能」と言う)を選択する。なお、特定のユーザは、1回のUL機能を選択することによって、複数個のデータファイルを、サービス提供サーバ300にアップロードすることができる。MFP100のCPU122は、ユーザによるUL機能の選択が検出されると、ユーザによってUL機能が選択された時刻を示す時刻情報を、メモリ124に格納する。例えば、UL機能が選択された際に、CPU122によって計時される時刻が2013年2月28日午後2時50分である場合、CPU122は、2013年2月28日午後2時50分を示す時刻情報を、メモリに格納する。その後、CPU122は、仲介サーバ10に、時刻取得要求の送信要求を送信する。時刻取得要求の送信要求は、MFP100に登録されているサービス提供サーバ300の識別情報とアクセストークンとの組合せと、MFP100のMACアドレス(即ちM100)を含む。なお、以降のサービス提供サーバとMFP100との間で通信される情報には、サービス提供サーバ300の識別情報とアクセストークンとの組合せと、MFP100のMACアドレスと、時刻情報とが含まれる。
アップロード仲介処理では、CPU22は、例えばMFP100,200等の通信機器及びサービス提供サーバ300等と、http(HyperText Transfer Protocolの略)に従って通信を実行する。
まず、S10において、PU22は、MFP100から時刻取得要求の送信要求が受信されたのか否かを判断する。CPU22は、MFP100から受信された情報に、時刻取得要求を示すURL(Uniform Resource Locatorの略)が含まれる場合に、時刻取得要求の送信要求が受信されたと判断し(S10でYES)、S12に進む。一方、CPU22は、MFP100から受信された情報に、時刻取得要求を示すURLが含まれない場合に、時刻取得要求の送信要求が受信されていないと判断し(S10でNO)、S14に進む。
S12では、CPU22は、時刻取得要求の送信要求に対する応答として、時刻取得要求を、MFP100に送信して、本処理を終了する。時刻取得要求は、MFP100に格納されている時刻情報を、仲介サーバ10に送信するための送信先URLを含む。
S14では、CPU22は、MFP100から、アップロード開始指示の送信要求が受信されたのか否かを判断する。なお、アップロード開始指示の送信要求は、MFP100がUL機能の選択を検出した際の時刻を示す時刻情報を含む。CPU22は、MFP100から受信された情報に、S12で送信された送信先URLが含まれる場合に、アップロード開始指示の送信要求が受信されたと判断し(S14でYES)、S16に進む。一方、CPU22は、MFP100から受信された情報に、S12で送信された送信先URLが含まれない場合に、時刻取得要求の送信要求が受信されていないと判断し(S14でNO)、S22に進む。
S16では、CPU22は、MFP100から取得された時刻情報によって示される時刻を表す時刻情報(例えば201302281450)と、MFP100のMACアドレス(即ちM100)とを組み合わせて、アップロード識別情報(例えば201302281450_M100)を生成する。そして、CPU22は、生成されたアップロード識別情報と、カウント値「0」との組合せを、アップロード管理データベース32に登録する。次いで、S18では、CPU22は、サービス提供サーバ300の第1のAPIに従って、所定のフォルダ名を示すフォルダ名情報を含むフォルダID要求を、特定のサービス提供サーバに送信する。そして、CPU22は、フォルダID要求の応答として、フォルダIDと、所定のフォルダ名のフォルダが無いことを示す情報と、のいずれかを、サービス提供サーバ300から取得する。なお、所定のフォルダ名は、仲介サーバ10のメモリ26に予め格納されている。
仲介サーバ10は、仲介サーバ10を利用して、サービス提供サーバ300,310にデータファイルがアップロードされる場合、所定のフォルダ名のフォルダに、データファイルを格納させる。即ち、データファイルは、複数個のサービス提供サーバ300,310にいずれのサービス提供サーバであっても、所定のフォルダ名のフォルダに格納される。S18では、今回のアップロード仲介処理の前に、アップロード仲介処理が実行されたことがある場合、所定のフォルダ名のフォルダが、既にサービス提供サーバ300に格納されている可能性がある。
CPU22は、所定のフォルダ名のフォルダが格納されていないことを示す情報が取得される場合(S18でNO)、S19において、第1のAPIに従って、サービス提供サーバ300に、所定のフォルダ名のフォルダの作成要求を送信する。そして、CPU22は、サービス提供サーバ300から作成されたフォルダのフォルダIDを取得して、S20に進む。一方、CPU22は、S18において、フォルダIDが取得される場合(S18でYES)、S19をスキップして、S20に進む。
S20では、CPU22は、アップロード開始指示を、MFP100に送信して、本処理を終了する。アップロード開始指示は、S18又はS19で取得されたフォルダIDと、第1から第3のURLと、を含む。第1のURLは、MFP100が、サービス提供サーバ300に、データファイルをアップロードする際に利用されるURLを、仲介サーバ10から取得するためのURLである。第2のURLは、MFP100が、サービス提供サーバ300に、1個のデータファイルをアップロードした結果、サービス提供サーバ300から受信するアップロード結果を、仲介サーバ300に送信するためのURLである。第3のURLは、MFP100が、アップロードすべき全ての個数のデータファイルを、サービス提供サーバ300にアップロードした後に、仲介サーバ10に、完了通知を送信するためのURLである。
S22では、CPU22は、MFP100から、アップロードURLの送信要求が受信されたのか否かを判断する。CPU22は、MFP100から受信された情報に、第1のURLが含まれる場合に、アップロードURLの送信要求が受信されたと判断し(S22でYES)、S24に進む。一方、CPU22は、MFP100から受信された情報に、第1のURLが含まれない場合に、アップロードURLの送信要求が受信されていないと判断し(S22でNO)、S32に進む。アップロードURLの送信要求は、フォルダIDを含む。
S24では、CPU22は、MFP100が、サービス提供サーバ300にアップロードするデータファイルのファイル名を決定する。具体的には、まず、CPU22は、S22で受信されたアップロードURLの送信要求に含まれるMACアドレス(即ちM100)と時刻情報とを用いて、アップロード識別情報を特定する。具体的には、MACアドレスと、時刻情報によって示される時刻を表す時刻文字列と、の両方を含むアップロード識別情報を特定する。特定されたアップロード識別情報と、カウント値との組合せを、アップロード管理データベース32から特定する。次いで、CPU22は、特定された組合せのカウント値に1を加算する。さらに、CPU22は、時刻情報を表す時刻文字列(例えば201302281450)と、カウント値(例えばX)と、データファイルのファイル形式を示す拡張子(例えばjpg)と、を用いて、ファイル名(例えば201302281450_X.jpg)を決定する。
次いで、S26では、CPU22は、アップロードURLを作成するために必要な情報を、サービス提供サーバ300から取得する。具体的には、CPU22は、第1のAPIに従って、アップロードURLの送信要求に含まれるフォルダIDによって識別されるフォルダの位置を示すURLを、サービス提供サーバ300から取得するためのURL要求を、サービス提供サーバ300に送信する。そして、CPU22は、URL要求の応答として受信されるURLを、サービス提供サーバ300から受信する。なお、変形例では、CPU22は、アップロードURL自体を、サービス提供サーバ300から取得してもよい。
続くS28では、CPU22は、アップロードURLを作成する。具体的には、CPU22は、S26で取得されたURLに、フォルダIDを付加して、アップロードURLを作成する。さらに、S28では、CPU22は、第1のAPIに従って、アップロードURLを含むHTTPリクエストのテンプレートを作成する。HTTPリクエストのテンプレートは、POSTコマンドのテンプレートである。HTTPリクエストのテンプレートは、さらに、S22で受信されたアップロードURLの送信要求に含まれるアクセストークンと、S24で決定されたファイル名と、を含む。
次いで、S30では、CPU22は、HTTPリクエストのテンプレートを、MFP100に送信して、本処理を終了する。これにより、アップロードURLとファイル名とが、CPU22からMFP100に送信される。
S32では、CPU22は、MFP100から、アップロード結果が受信されたのか否かを判断する。CPU22は、MFP100から受信された情報に、第2のURLが含まれる場合に、アップロード結果が受信されたと判断し(S32でYES)、S34に進む。一方、CPU22は、MFP100から受信された情報に、第3のURLが含まれている場合に、アップロード結果が受信されていないと判断し(S32でNO)、S38に進む。
S34では、CPU22は、第1のAPIに従って、MFP100から受信されたアップロード結果を解析する。具体的には、CPU22は、アップロード結果に、アップロードが完了したことを示す成功情報とアップロードができなかったことを示す失敗情報とのどちらの情報が含まれているのかを解析する。次いで、S36では、CPU22は、解析結果を、MFP100に送信して、本処理を終了する。
S32でNOの場合、CPU22は、MFP100から完了通知を受信している。S38では、CPU22は、S24と同様の方法で、完了通知に含まれているMFP100のMACアドレスと時刻情報とを用いて、アップロード識別情報を特定する。次いで、特定されたアップロード識別情報と、カウント値との組合せを、アップロード管理データベース32から消去する。次いで、S40において、CPU22は、MFP100の表示部110に表示させる画面を表す画面データを、MFP100に送信して、処理を終了する。画面データは、サービス提供サーバを選択させるための選択画面である。なお、詳しくは後述するが、S40で送信される画面データで表される画面は、上記の選択画面と同様であり、特定のユーザがMFP100の操作部108を操作してどのサービス提供サーバにデータファイルをアップロードするのかを選択するための画面である。
(スキャンデータファイルがアップロードされる第1のケース)
次いで、図3,4を参照して、MFP100からサービス提供サーバ300に、スキャンデータファイルをアップロードする際に、MFP100と仲介サーバ10とサービス提供サーバ300とが実行する処理を説明する。なお、図4は、図3の最後の処理に続いて実行される処理を示す。
MFP100は、ウェブブラウザプログラムに従って、仲介サーバ10から取得された画面データによって表される選択画面(即ち図2のS40で送信される画面データ)を、表示部110に表示する。特定のユーザは、選択画面が表示部110に表示されている状態で、操作部108を操作して、サービス提供サーバ及び機能の選択を実行することができる。MFP100は、特定のユーザによって、サービス提供サーバ300の選択及びスキャンUL機能の選択が実行されると、スキャンUL機能の選択が実行された時刻である2013年2月28日午後2時50分を示す時刻情報を、サービス提供サーバ300の識別情報に関連付けて、メモリ124に格納する。また、MFP100は、特定のユーザによって選択されたサービス提供サーバ300の識別情報とアクセストークンとの組合せを、メモリ124から特定する。次いで、MFP100は、ウェブブラウザプログラムに従って、予め決められているURLを送信先に指定して、仲介サーバ10に、時刻取得要求の送信要求を送信する。なお、MFP100は、ウェブブラウザプログラムに従って、仲介サーバ10及びサービス提供サーバ300と通信を実行する。
仲介サーバ10は、時刻取得要求の送信要求が受信される(図2のS10でYES)と、時刻取得要求の送信要求に対する応答として、時刻取得要求を、MFP100に送信する(図2のS12)。
MFP100は、時刻取得要求を受信すると、時刻取得要求に含まれるサービス提供サーバ300の識別情報に関連付けてメモリ124に格納されている時刻情報を特定する。次いで、MFP100は、特定された時刻情報と、MFP100のMACアドレス「M100」と、を含むアップロード開始指示の送信要求を、仲介サーバ10に送信する。なお、変形例では、MFP100は、時刻取得要求の送信要求を、仲介サーバ10に送信せずに、アップロード開始指示の送信要求を、仲介サーバ10に送信してもよい。この場合、仲介サーバ10は、MFP100に時刻取得要求を送信せずに、以下の処理を実行する。
仲介サーバ10は、アップロード開始指示の送信要求が受信される(図2のS14でYES)と、アップロード開始指示の送信要求に含まれる時刻情報を用いて、時刻情報によって示される時刻を表す時刻文字列「201302281450」を特定する。次いで、特定された時刻文字列と、MFP100のMACアドレス「M100」とを組み合わせて、アップロード識別情報「201302281450_M100」を生成する。次いで、仲介サーバ10は、生成されたアップロード識別情報「201302281450_M100」と、カウント値「0」との組合せを、アップロード管理データベース32に格納する(図2のS16)。
仲介サーバ10は、メモリ30に予め格納されている所定のフォルダ名「Folder1」のフォルダのフォルダID要求を、サービス提供サーバ300に送信する(図2のS18)。サービス提供サーバ300は、フォルダID要求を受信すると、フォルダ名「Folder1」のフォルダを特定する。サービス提供サーバ300は、特定されたフォルダのフォルダIDを、フォルダID要求の応答として、仲介サーバ10に送信する。なお、図示省略しているが、サービス提供サーバ300は、フォルダ名「Folder1」のフォルダを特定されない場合、フォルダ名「Folder1」のフォルダが格納されていないことを示す情報を、フォルダID要求の応答として、仲介サーバ10に送信する。この場合、仲介サーバ10は、フォルダ名「Folder1」のフォルダの作成要求を、サービス提供サーバ300に送信する(図2のS19)。サービス提供サーバ300は、フォルダの作成要求を受信すると、フォルダ名「Folder1」のフォルダを作成し、作成されたフォルダのフォルダIDを決定して、仲介サーバ10に送信する。
フォルダIDを受信すると、仲介サーバ10は、アップロード開始指示を、MFP100に送信する(図2のS20)。MFP100は、アップロード開始指示を受信すると、スキャン実行部104にセットされたN枚(Nは1以上の整数)の原稿のスキャン処理を実行する。スキャン処理では、1枚の原稿に対して、1個のデータファイルが生成される。即ち、N枚の原稿のスキャン処理では、N個のデータファイルが生成される。本実施例では、1枚の原稿のスキャンによって1個の画像データが生成され、当該1個の画像データがサービス提供サーバ300にアップロードされた後に、他の1枚の原稿のスキャンによって他の1個の画像データが生成される状況のように、複数個のデータファイルが非同時的に生成される状況を想定しているのではなく、N枚の原稿のスキャン処理によって、N個のデータファイルが同時的に生成される。なお、変形例では、MFP100は、N枚の原稿のスキャン処理によって、1個のデータファイルを生成してもよい。また、別の変形例では、MFP100は、上記したように、1枚の原稿のスキャン処理によって1個のデータファイルが生成され、当該1個のデータファイルがサービス提供サーバ300にアップロードされた後に、他の1枚の原稿のスキャン処理によって他の1個の画像データが生成される状況のように、複数個のデータファイルが非同時的に生成されてもよい。
MFP100は、生成されたN個のデータファイルを、一時的にメモリ124内に格納する。次いで、MFP100は、1個目のデータファイルのアップロード処理を実行する。アップロード処理では、最初に、1個目のデータファイルをアップロードするためのURLを、仲介サーバ10から取得する。具体的には、アップロード開始指示に含まれている第1のURLを送信先に指定して、アップロードURL送信要求を、仲介サーバ10に送信する。
仲介サーバ10は、アップロードURL送信要求を受信すると、1個目のデータファイルのファイル名を決定する。即ち、仲介サーバ10は、アップロード識別情報とカウント値との組合せを、アップロード管理データベース32から特定し、カウント値に1を加算する。1個目のデータファイルのファイル名を決定する段階では、特定されたカウント値は、「0」であり、特定されたカウント値「0」に1を加算して、カウント値「1」を算出する。仲介サーバ10は、特定されたアップロード識別情報に含まれる時刻文字列「201302281450」と、カウント値「1」と、データファイルのファイル形式を示す拡張子「jpg」と、を用いて、ファイル名「201302281450_001.jpg」を決定する(図2のS24)。
次いで、仲介サーバ10は、アップロードURLを作成するために必要な情報を、サービス提供サーバ300に要求し、当該情報をサービス提供サーバ300から受信する(図2のS26)。仲介サーバ10は、サービス提供サーバ300から取得された情報を用いて、アップロードURLを作成する。そして、仲介サーバ10は、決定されたファイル名「201302281450_001.jpg」と、作成されたアップロードURLと、を含むHTTPリクエストのテンプレートを、MFP100に送信する(図2のS30)。なお、変形例では、予め、仲介サーバ10のメモリ30が、アップロードURLを作成するために必要な情報を格納していていもよい。この場合、仲介サーバ10は、サービス提供サーバ300に情報の要求せずに、メモリ124に格納されている情報を用いて、アップロードURLを作成してもよい。
MFP100は、HTTPリクエストのテンプレートを受信すると、POSTコマンドのHTTPリクエストを生成する。具体的には、MFP100は、HTTPリクエストのテンプレートに、1個目のデータファイルを書き込むことによって、HTTPリクエストを生成する。次いで、MFP100は、HTTPリクエストを、仲介サーバ10を介さずに、サービス提供サーバ300に送信することによって、スキャンデータファイルをサービス提供サーバ300に送信する。本実施例では、HTTPリクエストが仲介サーバ10を介さずに通信されるために、特定のユーザのプライベートなデータファイルが仲介サーバ10を経由するのを防止することができる。
サービス提供サーバ300は、HTTPリクエストを受信すると、HTTPリクエストに含まれるフォルダIDのフォルダに、1個目のデータファイルを格納可能であるのか否かを判断する。サービス提供サーバ300では、ユーザごとに、格納可能なデータ容量が割り当てられている。サービス提供サーバ300は、例えば、HTTPリクエストに書き込まれているデータファイルを、サービス提供サーバ300に格納すると、特定のユーザに割り当てられている格納可能なデータ容量を越える場合に、1個目のデータファイルを格納不可能であると判断し、格納可能なデータ容量を超えない場合に、1個目のデータファイルを格納可能であると判断する。
サービス提供サーバ300は、1個目のデータファイルを格納可能であると判断される場合に、HTTPリクエストに含まれるフォルダIDのフォルダに、1個目のデータファイルを格納する。また、サービス提供サーバ300は、1個目のデータファイルのファイル名として、HTTPリクエストに含まれているファイル名「201302281450_001.jpg」を付与する。サービス提供サーバ300は、第1のAPIに従って、1個目のデータファイルを格納すると、アップロードが成功したことを示すアップロード結果を作成し、MFP100に送信する。
なお、図示省略するが、サービス提供サーバ300は、1個目のデータファイルを格納不可能であると判断される場合に、第1のAPIに従って、1個目のデータファイルを格納すると、アップロードが失敗したことを示すアップロード結果を作成し、MFP100に送信する。
MFP100は、アップロード結果を受信すると、アップロード結果を、アップロード開始指示に含まれている第2のURLを送信先に指定して、仲介サーバ10に送信する。仲介サーバ10は、アップロード結果が受信されると(図2のS32でYES)、アップロード結果を解析する(図2のS34)。
図4では、仲介サーバ10は、アップロードが成功したことを示すアップロード結果の解析結果を、MFP10に送信する(図2のS36)。MFP100は、第1のAPIを格納していないため、サービス提供サーバ300から受信されたアップロード結果を解析することができない。上記の構成では、MFP100は、仲介サーバ10から、アップロードの解析結果を受信する。これにより、MFP100は、APIを格納せずに、アップロード結果を知ることができる。
MFP100は、アップロードが成功したことを示すアップロード結果を受信すると、1個目のデータファイルを、メモリ30から消去する。次いで、MFP100は、2個目のデータファイルのアップロード処理を開始する。
なお、MFP100は、アップロードが失敗したことを示すアップロード結果の解析結果を受信すると、以後のアップロード処理を実行せずに、完了通知を、仲介サーバ10に送信する。
2個目のデータファイルのアップロード処理では、MFP100は、1個目のデータファイルのアップロード処理と同様に、第1のURLを送信先に指定して、2個目のデータファイルをアップロードするためのアップロードURL送信要求を、仲介サーバ10に送信する。
仲介サーバ10は、アップロードURL送信要求を受信すると、1個目のデータファイルの場合と同様の方法で、2個目のデータファイルのファイル名を決定する。ここで、2個目のデータファイルのファイル名を決定する段階では、特定されたカウント値は、「1」であり、特定されたカウント値「1」に1を加算して、カウント値「2」が算出される。仲介サーバ10は、時刻情報を表す時刻文字列「201302281450」と、カウント値「2」と、データファイルのファイル形式を示す拡張子「jpg」と、を用いて、ファイル名「201302281450_002.jpg」を決定する(図2のS24)。
仲介サーバ10は、1個目のデータファイルの場合と同様に、アップロードURLを作成するために必要な情報を、サービス提供サーバ300から取得する(図2のS26)。なお、同時的に生成されたN個のデータファイルがアップロードされる場合、アップロードURLを作成するために必要な情報は、データファイル毎に変更されない。仲介サーバ10は、1個のデータファイルをアップロードする毎に、アップロードURLを作成するために必要な情報を取得する。この構成によれば、仲介サーバ10は、N個のデータファイルのアップロードが完了するまで、アップロードURLを作成するために必要な情報を、保持しておく必要がない。仲介サーバ10は、1個目のデータファイルの場合と同様に、HTTPリクエストのテンプレートを作成して(図2のS28)、MFP100に送信する(図2のS30)。
なお、変形例では、仲介サーバ10は、1個目のデータファイルのアップロード処理の際に取得したアップロードURLを作成するために必要な情報を、メモリ30に保持していてもよい。この場合、仲介サーバ10は、2個目のデータファイルのアップロード処理の際に、アップロードURLを作成するために必要な情報を、サービス提供サーバ300から取得しなくてもよい。仲介サーバ10は、メモリ30に保持されているアップロードURLを作成するために必要な情報を用いて、アップロードURLを作成してもよい。
MFP100は、1個目のデータファイルのアップロード処理と同様の処理をN回繰り返すことによって、N個のデータファイルを、サービス提供サーバ300にアップロードする。N個のデータファイルのアップロード処理が完了すると、MFP100は、データファイルのアップロードが完了したと判断し、データファイルのアップロード処理が完了したことを示す完了通知を、仲介サーバ10に送信する。なお、M個目(MはN以下の整数)のデータファイルのアップロード処理において、アップロードが失敗したことを示すアップロード結果が受信される場合、以後のアップロード処理を実行せずに、完了通知を、仲介サーバ10に送信する。
仲介サーバ10は、完了通知を受信すると(図2のS32でNO)、アップロード識別情報「201302281450_M100」とカウント値「N」との組合せを、アップロード管理データベース32から消去する(図2のS38)。次いで、画面データを、MFP100に送信する(図2のS40)。MFP100は、画面データを受信すると、表示部110に、画面データによって表される画面を表示させる。なお、変形例では、仲介サーバ10は、アップロード識別情報「201302281450_M100」とカウント値「N」との組合せがアップロード管理データベース32に登録されてから、所定の期間が経過した後に、アップロード識別情報「201302281450_M100」とカウント値「N」との組合せを、アップロード管理データベース32から消去してもよい。
(外部メモリに格納されているデータファイルがアップロードされる第2のケース)
次いで、図5を参照して、MFP100からサービス提供サーバ300に、外部メモリに格納されているデータファイルをアップロードする際に、MFP100と仲介サーバ10とサービス提供サーバ300とが実行する処理を説明する。
MFP100は、特定のユーザによって、サービス提供サーバ300の選択及びメモリUL機能の選択が実行されると、メモリUL機能の選択が実行された時刻である2013年2月28日午後2時50分を示す時刻情報を、サービス提供サーバ300の識別情報に関連付けて、メモリ124に格納する。第2のケースでは、第1のケースと比較して、仲介サーバ10からMFP100へのアップロード開始指示の送信処理(図2のS20)から、ファイル名決定(図2のS24)までの処理が異なる。それ以外の第2のケースにおける各デバイス10,100,300の処理は、第1のケースにおける各デバイス10,100,300の処理と同様であるため、説明を省略する。
MFP100は、アップロード開始指示を受信すると、データ読取部106にセットされている外部メモリ(例えばUSBメモリ)に格納されているL個(Lは1以上の整数)のデータファイルを読み込んで、一時的に制御部120のメモリ124内に格納する。次いで、MFP100は、1個目のデータファイルのアップロード処理を実行する。アップロード処理では、最初に、1個目のデータファイルをアップロードするためのURLを、仲介サーバ10から取得する。具体的には、アップロード開始指示に含まれている第1のURLを送信先に指定して、アップロードURL送信要求を、仲介サーバ10に送信する。MFP100は、1個目のデータファイルに既に付加されているファイル名「file1」を含むアップロードURL送信要求を、仲介サーバ10に送信する。
仲介サーバ10は、アップロードURL送信要求を受信すると(図2のS22でYES)、1個目のデータファイルのファイル名を決定する。仲介サーバ10は、アップロード識別情報とカウント値との組合せを、アップロード管理データベース32から特定し、カウント値に1を加算する。仲介サーバ10は、時刻情報を表す時刻文字列「201302281450」と、受信されたファイル名「file1」と、データファイルのファイル形式を示す拡張子「jpg」と、を用いて、ファイル名「file1_201302281450.jpg」を決定する(図2のS24)。この構成によれば、データファイルに予め付与されているファイル名「file1」を含む新たなファイル名「file1_201302281450.jpg」を決定することができる。この結果、特定のユーザが、ファイル名「file1」から、データファイルの内容を想起することができる場合に、新たなファイル名「file1_201302281450.jpg」からデータファイルの内容を想起することができる。
(本実施例の効果)
上記の仲介サーバ10は、MFP100が、MFP100から受信された時刻情報によって表される時刻文字列を含むファイル名を、アップロードすべきデータファイルに関連付けて、サービス提供サーバ300に格納させるために、MFP100に、ファイル名を送信する。MFP100は、MFP100によって計時される時刻を表す時刻文字列を含むファイル名と、データファイルと、を関連付けて、サービス提供サーバ300に格納させることができる。この結果、特定のユーザは、ファイル名を確認することによって、MFP100によって計時された時刻を知ることができる。これにより、特定のユーザは、データファイルによって表される画像を確認しなくても、ファイル名を確認することによって、データファイルの内容を想起し得る。この構成によれば、MFP100からサービス提供サーバ300に格納されるデータファイルに、適切なファイル名を関連付けて格納し得る。
また、仲介サーバ10は、特定のユーザが、MFP100にUL機能を選択した際の時刻を表す時刻文字列を含むファイル名を決定する。この構成によれば、特定のユーザは、ファイル名を確認することによって、データファイルのアップロードを指示した時刻を知ることができる。特定のユーザは、データファイルをサービス提供サーバ300にアップロードするための指示をした時刻を元に、画像データファイルの内容を想起し得る。この構成によれば、ユーザは、ファイル名を確認することによって、画像データファイルの内容を想起し得る。
仲介サーバ10は、同一の時刻文字列を含む複数個のデータファイルのファイル名を決定する。この結果、特定のユーザは、ファイル名を確認することによって、同じ時刻文字列を含むファイル名のデータファイルが、相互に関連するデータファイルであると知ることができる。
仲介サーバ10は、アップロード管理データベース32に、時刻文字列を登録する。そして、仲介サーバ10は、MFP100から完了通知が受信されるまで、時刻文字列を含むアップロード識別情報を、アップロード管理データベース32に保持する。この構成によれば、仲介サーバ10は、時刻文字列を用いて、複数個のデータファイルのファイル名が決定されるまで、時刻文字列をアップロード管理データベース32に保持することができる。これにより、同一の時刻文字列を用いて、複数個のファイル名を決定することができる。
仲介サーバ10は、アップロード管理データベース32に、時刻文字列を登録する。この構成によれば、仲介サーバ10は、アップロード管理データベース32に、MFP100のMACアドレスと時刻文字列とを含むアップロード識別情報が登録されている間に、新たに、MFP100からアップロード開始指示の送信要求が受信される場合に、同じMACアドレスと、異なる時刻文字列と、を含む複数のアップロード識別情報を、区別可能にアップロード管理データベース32に登録することができる。
例えば、MFP100からサービス提供サーバ300に、データファイルをアップロード中に、仲介サーバ10とMFP100とが通信可能な状況から通信不可能な状況(例えばMFP100の電源がONからOFFに変更された状況)に移行する場合がある。この場合、仲介サーバ10は、MFP100から完了通知を受信しないため、MFP100のMACアドレスを含むアップロード識別情報とカウント値の組合せは、アップロード管理データベース32から消去されない。この状態で、仲介サーバ10とMFP100とが通信不可能な状況から通信可能な状況(例えばMFP100の電源がOFFからONに変更された状況)に移行し、新たにMFP100がUL機能を実行する場合がある。あるいは、MFP100が、1回のUL機能の選択に対するアップロード処理を実行している間に、他のUL機能の選択が検出され、複数のアップロード処理を並行して実行する場合がある。これらの場合に、MFP100のMACアドレスを含む複数個のアップロード識別情報を、アップロード管理データベース32に登録する。アップロード識別情報は、時刻文字列を含んでいるために、CPU22は、MFP100のMACアドレスを含む複数個のアップロード識別情報がアップロード管理データベース32に登録されていても、複数個のアップロード識別情報のそれぞれを、時刻情報を用いて区別することができる。
(対応関係)
MFP100が「画像処理装置」の一例であり、仲介サーバ10が「通信装置」の一例である。CPU22が実行する図2のS14の処理が「受信部」の一例であり、図2のS24の処理が「決定部」の一例であり、図2のS30の処理が「送信部」の一例である。ファイル名201302281450_001.jpgが「第1の文字列」及び「第1の文字列に関する文字列」の一例であり、ファイル名201302281450_002.jpgが「第2の文字列」及び「第2の文字列に関する文字列」の一例である。スキャンデータファイル及び外部メモリに格納されているデータファイルが「画像データファイル」の一例である。
特定のユーザによるUL機能の選択が「記憶装置に格納するための指示」の一例である。201302281450_001.jpgのうちの001が「第1の付加文字列」の一例であり、201302281450_002.jpgのうちの002が「第2の付加文字列」の一例である。メモリ30が「一時格納部」の一例であり、CPU22が実行する図2のS16の処理及びS38の処理が、「格納制御部」の一例である。CPU22が実行する図2のS22の処理が、「ファイル名受信部」の一例である。
(第2実施例)
(UL機能が実行される際の仲介サーバ10が実行するアップロード仲介処理;図6)
第1実施例と異なる点を説明する。図6のS110〜S116,S122,S126〜S140の処理は、図2のS10〜S14,S22,S26〜S40の処理と同様である。
S118では、CPU22は、サービス提供サーバ300の第1のAPIに従って、S114で取得された時刻情報によって表される時刻文字列「201302281450」のフォルダ名を示すフォルダ名情報を含むフォルダID要求を、サービス提供サーバ300に送信する。そして、CPU22は、フォルダID要求の応答として、フォルダIDと、時刻文字列「201302281450」のフォルダ名のフォルダが無いことを示す情報と、のいずれかを、サービス提供サーバ300から取得する。
CPU22は、時刻文字列「201302281450」のフォルダ名のフォルダが格納されていないことを示す情報が取得される場合(S118でNO)、S119において、MFP100からアップロードされるデータファイルを格納するフォルダのフォルダ名を、「201302281450」に決定する。次いで、S120において、第1のAPIに従って、サービス提供サーバ300に、時刻文字列「201302281450」のフォルダ名のフォルダの作成要求を送信する。そして、CPU22は、サービス提供サーバ300から作成されたフォルダのフォルダIDを取得して、S121に進む。一方、CPU22は、S118において、フォルダIDが取得される場合(S118でYES)、S119,S120をスキップして、S121に進む。
S121では、CPU22は、アップロード開始指示を、MFP100に送信して、本処理を終了する。アップロード開始指示は、第1から第3のURLと、フォルダIDとを含む。
S124では、CPU22は、MFP100が、サービス提供サーバ300にアップロードするデータファイルのファイル名を決定する。具体的には、まず、CPU22は、アップロードURLの送信要求に含まれるMACアドレス(即ちM100)と時刻情報によって示される時刻を表す時刻情報とを含むアップロード識別情報と、カウント値との組合せを、アップロード管理データベース32から特定する。次いで、CPU22は、特定された組合せに含まれるカウント値に、1を加算する。CPU22は、カウント値「X」と、データファイルのファイル形式を示す拡張子「jpg」と、を用いて、ファイル名「X.jpg」を決定する。即ち、ファイル名は、時刻文字列を含まない。なお、S122において、データファイルに既に付与されているファイル名(例えばfile1.jpg)が受信されている場合、S124において、CPU22は、既に付与されているファイル名(例えばfile1.jpg)を、サービス提供サーバ300で格納される際のファイル名(例えばfile1.jpg)と決定してもよい。なお、変形例では、ファイル名は、第1の実施例と同様に、時刻文字列を含んでいてもよい。
上記の仲介サーバ10は、MFP100が、MFP100から受信された時刻情報によって表される時刻文字列を含むフォルダ名を、アップロードすべきデータファイルに関連付けて、サービス提供サーバ300に格納させるために、MFP100に、フォルダ名に対応するフォルダIDを送信する。これにより、MFP100は、MFP100によって計時される時刻を表す時刻文字列を含むフォルダ名のフォルダに、データファイルを格納させることができる。この結果、特定のユーザは、フォルダ名を確認することによって、MFP100によって計時された時刻を知ることができる。これにより、特定のユーザは、データファイルによって表される画像を確認しなくても、フォルダ名を確認することによって、フォルダに格納されているデータファイルの内容を想起し得る。この構成によれば、MFP100からサービス提供サーバ300に格納されるデータファイルに、適切なフォルダ名を関連付けて格納し得る。
(スキャンデータファイルがアップロードされる第3のケース)
次いで、図7を参照して、MFP100からサービス提供サーバ300に、スキャンデータファイルをアップロードする際に、MFP100と仲介サーバ10とサービス提供サーバ300とが実行する処理を説明する。
仲介サーバ10が、アップロード管理データベース32に、アップロード識別情報等を格納する処理(図6のS116)までは、第1のケースと同様である。仲介サーバ10は、時刻文字列「201302281450」のフォルダ名を示すフォルダ名情報を含むフォルダID要求を、サービス提供サーバ300に送信する(図6のS118)。サービス提供サーバ300は、フォルダID要求フォルダID要求を受信すると、フォルダ名「201302281450」のフォルダを特定する。サービス提供サーバ300は、特定されたフォルダのフォルダIDを、フォルダID要求の応答として、仲介サーバ10に送信する(図6のS118でYES)。
一方において、サービス提供サーバ300は、フォルダ名「201302281450」のフォルダが格納されていない場合、フォルダが格納されていないことを示す情報を、仲介サーバ10に送信する。仲介サーバ10は、フォルダが格納されていないことを示す情報を受信すると(図6のS118でNO)、アップロードされるデータファイルを格納するフォルダのフォルダ名を、「201302281450」に決定する(図6のS119でYES)。次いで、仲介サーバ10は、サービス提供サーバ300に、「201302281450」のフォルダ名のフォルダの作成要求を送信する(図6のS120)。
サービス提供サーバ300は、フォルダの作成要求を受信すると、「201302281450」のフォルダ名のフォルダと、当該フォルダのフォルダID「folder123」とを作成し、フォルダIDを、仲介サーバ10に送信する。仲介サーバ10は、フォルダIDを受信すると(図6のS120)、フォルダID「folder123」を含むアップロード開始指示を、MFP100に送信する(図6のS121)。以後の処理は、ファイル名の決定方法が異なる点を除いて、第1のケースと同様である。
(対応関係)
CPU22が実行する図6のS114の処理が「受信部」の一例であり、図6のS118,S119の処理が「決定部」の一例であり、図6のS121の処理が「送信部」の一例である。フォルダ名201302281450が「第1の文字列」の一例であり、フォルダIDfolder123が、「第1の文字列に関する文字列」の一例である。CPU22が実行する図6のS116の処理及びS138の処理が、「格納制御部」の一例である。
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。例えば、以下の変形例が含まれる。
(変形例)
(1)上記の第1実施例では、CPU22は、アップロード管理データベース32に格納されている時刻文字列を用いて、ファイル名を決定する。しかしながら、CPU22は、S22で受信されるアップロードURL送信要求に含まれる時刻情報の時刻を表す時刻文字列を用いて、ファイル名を決定してもよい。また、上記の第2実施例では、CPU22は、アップロード管理データベース32に格納されている時刻文字列を用いて、ファイル名を決定する。しかしながら、CPU22は、S114で受信されるアップロード開始指示の送信要求に含まれる時刻情報の時刻を表す時刻文字列を用いて、ファイル名を決定してもよい。本変形例では、CPU22は、アップロード管理データベース32に時刻文字列を格納しなくてもよい。即ち、CPU22は、アップロード識別情報として、MFP100のMACアドレスを、アップロード管理データベース32に格納してもよい。なお、上記の第1実施例では、アップロードデータベース32に格納されている時刻文字列と、S22で受信されるアップロードURL送信要求に含まれる時刻情報の時刻を表す時刻文字列と、は同一の時刻文字列である。上記の第2実施例では、アップロードデータベース32に格納されている時刻文字列と、S114で受信されるアップロード開始指示の送信要求に含まれる時刻情報の時刻を表す時刻文字列と、は同一の時刻文字列である。
(2)上記の第1実施例では、CPU22は、外部メモリに格納されているデータファイルがアップロードされる場合、既にデータファイルに付与されているファイル名(例えば「file1」)を含むファイル名(例えば「file1_201302281450.jpg」)を決定する。しかしながら、CPU22は、MFP100から、アップロードすべきデータファイルのファイルパス(例えば「D_test_image_file1.jpg」)を取得し、データファイルのファイルパスを含むファイル名(例えば「D_test_image_file1_201302281450.jpg」)を決定してもよい。第2実施例でも同様に、CPU22は、ファイルパスを含むファイル名を決定してもよい。
(3)また、CPU22は、アップロードすべきデータファイルのファイルパス(例えば「D_test_image_file1.jpg」)を取得し、サービス提供サーバ300に、取得されたファイルパスと同様にフォルダ構造を、作成させてもよい。
(4)「画像処理装置」は、MFP100に限られず、他の種類の通信装置(例えば、PC、サーバ、PDA、携帯端末、プリンタ、スキャナ、電話機、FAX装置、コピー機等)であってもよい。また、「通信装置」は、仲介サーバに限られない。また、「記憶装置」は、クラウドサービスを提供するサービス提供サーバ300に限られず、「画像処理装置」と画像データファイルの通信を実行する他の種類の装置であってもよい。
(5)MFP100は、スキャンUL機能及びメモリUL機能以外に、外部装置(例えばPC)からインターネット4又はLAN6を介して取得したデータファイルを、サービス提供サーバ300等にアップロードする機能を実行可能であってもよい。この場合、外部装置から取得したデータファイルが「画像データファイル」の一例である。
(6)「画像データファイル」は、JPEG形式のデータファイル以外に、GIF(Graphics Interchange Formatの略)形式、PNG(Portable Network Graphicsの略)形式等のビットマップ画像を表すデータファイルであってもよく、PDF形式のデータファイルであってもよい。
(7)「第1の文字列」、「第2の文字列」等は、ファイル名、フォルダ名以外に、データファイルのステータス等であってもよい。即ち、「第1の文字列」、「第2の文字列」等は、サービス提供サーバ300等に、データファイルが格納される際に、データファイルに関連して格納される文字列であればよい。
(8)「第1の文字列に関する文字列」等は、ファイル名、フォルダID以外に、ファイル名を識別するための識別情報であってもよい。即ち、サービス提供サーバ300が、「第1の文字列に関する文字列」を用いて、「第1の文字列」を識別可能であればよい。
(8)上記の各実施例では、仲介サーバ10のCPU22がソフトウェアに従って処理を実行することによって、仲介サーバ10の「受信部」等の機能が実現される。これに代えて、仲介サーバ10の「受信部」等の機能のうちの少なくとも一部は、論理回路等のハードウェアによって実現されてもよい。