カテゴリー内の他の記事

ファイルアップロード

フォローする

Index

ファイルアップロード

添付ファイルフィールドにファイルをアップロードするAPIです。

  • アップロードされたファイルのファイルキーを利用して、レコード登録やレコード更新などで利用できます。
  • 一度にアップロードできるファイルは、一つです。
  • レコードの取得APIで取得できるファイルキーは、ファイルアップロードには利用できません。

HTTP メソッド

POST

URI

https://(サブドメイン名).cybozu.com/k/v1/file.json

ゲストスペース内のアプリの場合

https://(サブドメイン名).cybozu.com/k/guest/(スペースのID)/v1/file.json

必要なアクセス権

※ アップロードしたファイルをレコードに関連付けするには、それぞれレコードの登録、またはレコードの更新で必要なアクセス権をご参照ください。

リクエスト形式

  • リクエストは multipart/form-data 形式で送信します。 詳細は RFC1867、RFC2388 を参照してください。
  • Content-Disposition 内の name には「file」、filename にはファイル名を指定してください。
    ※日本語ファイル名の場合は UTF8 でエンコードした内容を指定して下さい。

リクエストの例

リクエストヘッダを含んだ例)

ファイル内容が「test」の test.txt ファイルを送信した場合
POST /k/v1/file.json HTTP/1.1
Host: example.cybozu.com:443
X-Cybozu-Authorization: cnlvX2Z1a3VkYTpjeWJvenU=
Content-Type: multipart/form-data; boundary=---------------------------bee48a285354
Content-Length: 188

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

test

-----------------------------bee48a285354--

レスポンスの例

アップロードされたファイルのファイルキーが返されます。 ファイルキーは、レコード登録やレコード更新を行なう API で添付ファイルフィールドの値として使用します(後述)。

アップロードしたファイルとレコードの関連付け

取得したファイルキーを、登録や更新の API 実行時に、添付ファイルフィールドの値として、以下のように使用します。

リクエストヘッダ(レコード更新 API 使用時の場合)
PUT /k/v1/record.json HTTP/1.1
Host: example.cybozu.com:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type: application/json
  • Content-Type に application/json を指定して下さい。 指定しない場合は JSON が解釈できないため、実行時エラーとなります。
ボディ(レコード更新 API 使用時の場合)

制限事項

  • アップロードされたファイルは、レコード登録 API やレコード更新 API によってレコードに添付しない場合には、3日間で削除されます。
  • 一時保管領域に保管された状態のファイルも、ディスク使用量に含まれます。

その他につきましては、共通仕様の制限事項 をご確認ください。

関連Tips

JavaScriptサンプル

XMLHttpRequest

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
Hishikawa Takuro

name="file" は固定の様子。他の値だとCB_IL02が返ってくる。

Avatar
AD

すでにKintone上にアップしたいファイルを、他のアプリにもアップロードしたいのですが、レコードの取得APIで取得した添付ファイルのファイルキーをレコード更新APIのボディにセットして使うことは可能でしょうか。

Avatar
cybozu Development team

AD様

コメントありがとうございます。developer network事務局です。

はい、下記のようなイメージで利用可能です。
参考:ファイルアップロードのAPIドキュメント

ファイルダウンロードとアップロードに関する記事もありますので、是非参考にしていただけたらと思います。
ファイルダウンロードで必須となる2つの手順
ファイルアップロードで必須となる3つの手順

今後共よろしくお願い致します。

Avatar
yihung

IDとパルワードが流出された時に、Kintone上のデータとアタッチメントは簡単にダウンロードされます。

もしファイル(PDF,Word,Excel)をアップロードする際に、自動暗号化ツールを使って、暗号化されたファイルで保存するのは可能でしょうか?

そうするとあるIPアドレス以外の人がダウンロードしても、ファイルが見えない状態になります。

こういうようなツールは何かがありますか?

 

Avatar
cybozu Development team

yihung様

恐れ入りますが、ファイルアップロードのAPIへのフィードバックと異なるご質問のため、コミュニティにて投稿をお願いします。

また、よろしければ、製品への要望としてお送りください。

kintoneのポータルから「?」マーク->「kintoneの改善に協力」で送信することが可能です。

Avatar
AD

ファイルアップロードは、パスワード認証が必須でしょうか、APIトークン認証では実現不可でしょうか。

Avatar
cybozu Development team

AD様

以下のリンク先のとおり、ファイルアップロードAPIはAPIトークン認証が使用可能です。

https://developer.cybozu.io/hc/ja/articles/201941754#step7

Avatar
AD

日本語ファイル名の場合は UTF8 でエンコードした内容とのことですが、cURLを使用した場合、どのように指定すればよろしかったでしょうか。

ファイル名の文字化けが解決できなかったので、教えて頂けますと幸いです。

Avatar
cybozu Development team

AD 様

お世話になっております。

cURL でファイル名をエンコードするオプション等はないため、ツールかスクリプトで変換していただくことになるかと思います。

また、大変恐れ入りますが、ファイルアップロードのAPIへのフィードバックと異なるご質問のため、コミュニティにてご投稿いただけないでしょうか。
そちらのほうが多くの方がご覧になるため、アドバイスを受けやすいかと思います。

Avatar
ばみ

2018年2月9日のAD様の質問にて、既にアップロード済みのfilekeyを用いて他のレコード更新に利用することができる、との回答があります。

試してみたところ、下記のエラーとなるのですが、何かAPIの仕様が変わったなどありますでしょうか。

{code: "GAIA_IF02", id: "SNFsAyZADAvT0ZA0Avrg", message: "fileKeyパラメーター(201906101102310E765368603E41A29BAF40912D2BFE16122)の形式が不正です。"}

 

Avatar
cybozu Development team

ばみ 様

お世話になっております、cybozu developer network事務局です。

ご覧いただいた、2018年2月9日のAD様のご質問に対する回答につきまして、一部誤りがございました。
大変申し訳ございません。

レコードの取得APIで取得できる添付ファイルのファイルキーは、ファイルダウンロードができるファイルキーであり、
ファイルアップロード時には使用することができません。
参照:ファイルダウンロードで必須となる2つの手順 

ファイルアップロードAPIを使わずにレコードにアップロードされたファイルであれば、
ファイルダウンロードAPIでダウンロードし、ファイルアップロードAPIで別レコードにアップロードすることは可能です。
(ファイルキーは一度しか使用できません。)

以下、手順です。よろしければご参照ください。
①レコードの取得APIで、該当ファイルのファイルキーを取得する
②「ファイルダウンロードで必須となる2つの手順」記載の手順で、①で取得したファイルキーを使用し、該当ファイルをダウンロードする
③ 本ドキュメント記載の手順に沿って、新たにファイルキーを取得し、レコード更新API実行時に、リクエストボディにセットする

Avatar
ばみ

回答ありがとうございました。

fileKeyだけで連携できるのであれば複数ファイルにならなくてもよいと思ったので残念でした。

ログインしてコメントを残してください。