プラグインから外部にファイルをアップロードする

目次

プラグインから外部にファイルをアップロードする

プラグインから外部サービスにファイルをアップロードします。
この API を利用すると、クロスドメイン制約を回避して、外部サービスにリクエストを送信できます。

認証情報など秘匿する情報を付与して外部 API を実行する場合は、API を実行する前に、必要な情報をあらかじめプラグインに保存します。
プラグインに情報を保存、取得する API は、次のページを参照してください。

関数

PC/モバイル

kintone.plugin.app.proxy.upload(pluginId, url, method, headers, data, successCallback, failureCallback)

引数

引数 必須 説明
pluginId 文字列 必須 API を実行するプラグインの ID
url 文字列 必須 リクエスト URL
method 文字列 必須 HTTP メソッド
次のいずれかの値を指定します。
  • POST
  • PUT
headers オブジェクト 必須 リクエストヘッダー
何も指定しない場合は {} を指定します。
data オブジェクト 必須 リクエストボディ
data.format 文字列 必須 proxy 先へデータをアップロードするときのフォーマット
「RAW」のみ指定できます。
data.value Blob 型(File 型も含む) 必須 アップロードするデータ
アップロードするファイルのデータ
指定できるデータのサイズは、200MB までです。
successCallback 関数 省略可 リクエストが完了したあとに実行する関数
関数の引数には、次の 3 つの情報が渡されます。
  • 第 1 引数:レスポンスボディ(文字列)
  • 第 2 引数:ステータスコード(数値)
  • 第 3 引数:レスポンスヘッダー(オブジェクト)
省略した場合は kintone.Promise オブジェクト が返り、上記のレスポンスボディ、ステータスコード、レスポンスヘッダーが格納された配列で解決されます。
failureCallback 関数 省略可 リクエストが失敗した場合に実行する関数
関数の引数には、実行した API のレスポンスボディ(文字列)が渡されます。
省略した場合は kintone.Promise オブジェクト が返り、実行した API のレスポンスボディ(文字列)で棄却されます。

戻り値

successCallback を指定した場合、戻り値はありません。
引数の successCallback を省略すると、 kintone.Promise オブジェクト が返ります。

利用できる画面

PC
  • レコード一覧画面
  • レコード詳細画面
  • レコード追加画面
  • レコード編集画面
  • レコード印刷画面
  • グラフの画面
モバイル
  • レコード一覧画面
  • レコード詳細画面
  • レコード追加画面
  • レコード編集画面

サンプルコード

コールバックを使った記述方法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const data = {
  format: 'RAW',
  value: '<some blob object>'
};

kintone.plugin.app.proxy.upload('mjjfipoklghomcgafnajfibfgllhpocm', 'https://sample.com', 'POST', {}, data, (body, status, headers) => {
  // success
  console.log(status, JSON.parse(body), headers);
}, (error) => {
  // error
  console.log(error); // proxy APIのレスポンスボディ(文字列)を表示
});
kintone.Promise オブジェクトを使った記述方法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// kintone.Promise オブジェクトを使った記述方法
const data = {
  format: 'RAW',
  value: '<some blob object>'
};

kintone.plugin.app.proxy.upload('mjjfipoklghomcgafnajfibfgllhpocm', 'https://sample.com', 'POST', {}, data).then((args) => {
  // success
  /*  args[0] -> body(文字列)
   *  args[1] -> status(数値)
   *  args[2] -> headers(オブジェクト)
   */
  console.log(args[1], JSON.parse(args[0]), args[2]);
}, (error) => {
  // error
  console.log(error); // proxy APIのレスポンスボディ(文字列)を表示
});

注意事項

  • url に存在しないサーバーを指定した場合、レスポンスはステータスコード「503」(DNS Cache Missing)のエラーとなります。

制限事項

  • 対象のブラウザーは、 動作環境の Web ブラウザー (External link) に準じます。
  • 「Content-Length」ヘッダーと「Transfer-Encoding」ヘッダーは、内部的に自動で付加されるため、ユーザーからのリクエスト時に手動で設定できません。設定するとエラーが発生します。