19.1. ファイルをアカウントにアップロードする

mahara_upload_file

あなた は、ウェブサービスを介して個人のアカウントにファイルを配置できます。これは学習者が許可した後、別のシステムから直接Maharaに証明書またはその他のファイルを転送したい場合に役立ちます。

このウェブサービス呼び出しでサポートされるワークフローは次のとおりです:

  1. 関数 'mahara_upload_file' を使用して、ウェブサービストークンを設定します。

  2. 学習者は、サードパーティアプリケーションのボタンをクリックして、将来のある時点、例えば、彼らが卒業して卒業証書を受け取ると、ファイルを自分のアカウントに配置できることを確認します。このボタンは、学習者をMaharaにログインさせ(アカウントをまだ持っていない場合はアカウントを作成し)、 ファイル 領域に移動するために特別に作成されています。この領域では、ファイルがアカウントにアップロードされたときに通知を受け取ることを示すアラートが表示されます。

    注釈

    これは最も基本的なリンクであり、ボタンとしてスタイルを設定できます:

    <a href="https://domain/artefact/file/index.php?expectfile=1 &externalsource=application">ファイル転送に同意する</a>

    SAMLを使用する場合、最初にIdPを通過してから、Maharaにリダイレクトする必要があるため、URLはより複雑になります。

    <a href="https://domain/auth/saml/index.php?idpentityid=IdPinfo &wantsurl=https%3A%2F%2Fdomain%2Fartefact%2Ffile%2Findex.php %3Fexpectfile%3D1%26externalsource%3Dapplication">ファイル転送に同意する</a>

    ここで、

    • domain はMaharaのURLです

    • application はアップロード元を制限する識別子です

    • IdPinfo はIdPのURLです。

  3. ある時点でファイルが予期されていることをMaharaに通知するデータベースエントリが作成されます。

  4. ある時点で、ファイルはサードパーティのアプリケーションから転送されます。

ファイルはまとめて送信できます。学年度の終わりに、各ファイルを送信すると1回のAPI呼び出しが発生します。ファイルを配列で送信することはできません。

ファイルを送信するためのcURLコマンドは次のとおりです:

curl --location --request POST  https://domain/webservice/rest/server.php'  \
--form 'externalsource="identifier"' \ # the external source must match the one of the account
--form 'username="<please_fill_in>"' \ # the username of the account to receive the file
--form 'foldername="<please_fill_in>"' \ # the name of the folder which will hold the file, will be created if it doesn't exist
--form 'title="<please_fill_in>"' \ # the title for the uploaded file
--form 'description="<please_fill_in>"' \ # file description
--form 'tags[0]="tag1"' \ # (optional- this line can be removed if you don’t want to tag the file)
--form 'tags[1]="tag2"' \ # (optional- this line can be removed if you don’t want to tag the file)
--form 'wstoken="token"' \ # web services token you created
--form 'wsfunction="mahara_upload_file"' \
--form 'filetoupload=@"<please_fill_in>"' # the full path to a file