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で指定した、マルチパートの境界を示す文字列で任意のパートごとに区切られます。
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ----WebKitFormBoundary7MA4YWxkTrZu0gW (省略) ----WebKitFormBoundary7MA4YWxkTrZu0gW (省略) ----WebKitFormBoundary7MA4YWxkTrZu0gW
各パートではContent-Dispositionにform-dataを用い、「リクエストパラメーター」の名称をnameパラメーターに指定します。リクエストパラメーターは、nameパラメーターと値が改行を含んでセットとなるように実装します。
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 | アップロード先に同名ファイルが存在する場合、上書きするかどうかを指定します。引数名およびパス名は、大文字小文字を区別します。
それぞれのステータスコードについては「レスポンス」を参照してください。 | 任意 | 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 | リクエストパラメーターが正しくない場合に返すステータスコードです。複数のパラメーターで誤りがある場合、レスポンスでのエラーの要素は複数になります。 エラー種別は次のとおりです。
|
409 Conflict |
|
500 Internal Server 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= での文字列
関連項目
「Dr.Sum Cloud Hub導入・運用編」の「Dr.Sum Cloud Hubの環境設定をする」