Skip to main content

2.3. ファイルをアップロードする

Dr.Sum Cloud Hubサーバー上にファイルをアップロードします。

アップロード時の作業フォルダーについて

ファイルのアップロード時、一時ファイルが作業フォルダーに作成されます。この作業フォルダーは、Dr.Sum Cloud Hubの環境設定(setting.jsonファイル)のworkingFolderPathで設定したパスが利用されます。詳細は環境設定の説明を参照してください。

前提条件

  • 次に示す両方の設定項目で、実行ユーザーを設定しておく必要があります。

    • Web Console管理]タブの[スーパーユーザーの設定

    • Web Console管理]タブの[Web APIの実行ユーザーの設定

リソースURI

v1.0/file/upload

送信方法のメソッド

POST

リクエスト

リクエストヘッダー

ヘッダー名

備考

Host

<リクエストの送信先のホスト名:ポート番号>

Authorization

<Base64でエンコードされた認証情報>

IDとパスワードを半角コロン「:」で連結した文字列をBase64でエンコードし、エンコード後の文字列を指定してください。

1. エンコード例
apiuser01:password01
         ↓
YXBpdXNlcjAxOnBhc3N3b3JkMDE=


Content-Length

<リクエストボディのデータの長さ>

Content-Type

multipart/form-data; boundary=<パートの境界を示す文字列>

リクエストパラメーター

各リクエストパラメーターは、multipart/form-dataコンテンツタイプに従って、リクエストボディに指定してください。リクエストボディは、リクエストヘッダーのContentーTypeのboundaryで指定した、マルチパートの境界を示す文字列で任意のパートごとに区切られます。

2. マルチパートの例
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
(省略)
----WebKitFormBoundary7MA4YWxkTrZu0gW
(省略)
----WebKitFormBoundary7MA4YWxkTrZu0gW


各パートではContent-Dispositionにform-dataを用い、「リクエストパラメーター」の名称をnameパラメーターに指定します。リクエストパラメーターは、nameパラメーターと値が改行を含んでセットとなるように実装します。

3. リクエストパラメーターの指定例
Content-Disposition: form-data; name="dest_dir"
 
C:/DrSum56/CloudHubServer/webconsole/test

なお、fileリクエストパラメーターは、アップロードしたいファイル(1ファイル)をfilenameに指定し、かつContent-Typeにそのファイルタイプを指定します。

Content-Disposition: form-data; name="file"; filename="test.csv"
Content-Type: text/csv


Content-Dispositionヘッダーの数は、指定したいリクエストパラメーターの数に対応します。「リクエスト例」も合わせて参照してください。

リクエストパラメーターの文字エンコーディングはUTF-8です。

引数名

解説

区分

デフォルト

dest_dir

ファイルのアップロード先となる、Dr.Sum Cloud Hubサーバー上のフォルダーを絶対パスで指定します。アップロード先として指定できる場所は、[ファイル]タブで操作できるルートフォルダー配下のフォルダーです。ルートフォルダーは、環境設定(setting.jsonファイル)の"filer"の"rootPath"で設定されているパスです。

引数名およびパス名は、大文字小文字を区別します。

4. 指定例
"C:/DrSum57/CloudHubServer/webconsole/test"


必須

なし

file

アップロードしたいファイル(1ファイルのみ)を指定します。引数名およびパス名は、大文字小文字を区別します。

5. 指定例
"c:\work\sample.txt"


必須

なし

overwrite

アップロード先に同名ファイルが存在する場合、上書きするかどうかを指定します。引数名およびパス名は、大文字小文字を区別します。

  • true

    同名ファイルを上書きします。上書きされた場合は正常終了となります。

  • false

    同名ファイルを上書きしません。同名ファイルが存在する場合はエラーとなります。

それぞれのステータスコードについては「レスポンス」を参照してください。

任意

false

HTTPリクエスト例

前提条件

分類

項目

認証情報

ユーザーID

apiuser01

パスワード

password01

リクエストパラメーター

dest_dir

C:/DrSum57/CloudHubServer/webconsole/test

file

test.csv

overwrite

true

リクエスト例

POST /api/v1.0/file/upload HTTP/1.1
Host: localhost:6580
Authorization: Basic YXBpdXNlcjAxOnBhc3N3b3JkMDE=
Content-Length: 394
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
 
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="test.csv"
Content-Type: text/csv
 
(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="dest_dir"
 
C:/DrSum57/CloudHubServer/webconsole/test
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="overwrite"
 
true
----WebKitFormBoundary7MA4YWxkTrZu0gW

レスポンス

HTTPレスポンスステータスコード

次のHTTPステータスコードが返ります。Web API共通のレスポンスについては、Web APIの利用に関する説明を参照してください。

ステータスコード

意味

201

overwriteがtrueの場合で、かつアップロードまたはファイルの書き込み時に同名ファイルが存在していた場合に返すステータスコードです。

400

リクエストパラメーターが正しくない場合に返すステータスコードです。複数のパラメーターで誤りがある場合、レスポンスでのエラーの要素は複数になります。

エラー種別は次のとおりです。

  • NO_REQUIRED_PARAMETER

    dest_dirが未指定です。

  • NOT_UNDER_ROOT_PATH

    dest_dirがルートパスの配下にあるフォルダーパスではありません。

  • NO_REQUIRED_PARAMETER

    fileが未指定です。

  • FILE_LIMIT_EXCEEDED

    fileに複数のファイルが指定されています。

  • INVALID_PARAMETER_VALUE

    overwriteの値が誤っています。

  • REQUEST_PARAMETER_LIMIT_EXCEEDED

    多すぎるリクエストパラメーターが指定されています。

409 Conflict

  • FILE_ALREADY_EXISTS

    overwriteがfalseの場合で、かつ同名ファイルが存在する場合のエラーです。

500 Internal Server Error

  • INVALID_SETTING_JSON

    次に示す場合のエラーです。

    • 環境設定(setting.jsonファイル)の読み込みに失敗した。

    • 環境設定(setting.jsonファイル)にある"filer"の"rootPath"に、[ファイル]タブで操作できるルートフォルダーのパスが設定されていない。

  • IO_ERROR

    アップロード先のディレクトリ作成や、アップロード先へのファイル書き込みに失敗した場合のエラーです。

レスポンスヘッダー

レスポンスボディは空のため、Content-Typeは存在しません。

レスポンスボディ

レスポンスボディは空です。

実行例

WindowsでcURLコマンドを使ってWeb APIを実行する例を次に示します。実行には次の準備が必要です。

  • 例で示しているユーザーIDとパスワードを作成し、ユーザーIDを「前提条件」で説明した設定項目に設定する。

  • 例で登場しているファイルやフォルダーを用意する。

curl.exe -u apiuser01:password01 -X POST -F "dest_dir=\"C:/DrSum57/test\"" -F "file=@\"c:\temp\test.txt\"" http://localhost:6580/api/v1.0/file/upload

Base64による認証情報(ユーザーIDとパスワード)のエンコードイメージは次のとおりです。

実行時の文字列    :curl.exe -u apiuser01:password01 (省略)・・・
                                         ↓(Base64エンコード)
リクエストヘッダー:Authorization: Basic YXBpdXNlcjAxOnBhc3N3b3JkMDE=
での文字列

関連項目