0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kintoneの添付ファイルだけ外部のWEBサーバに保存したい

Posted at

手っ取り早く使いたい人向け

kintone連携 ファイルアップロード

kintoneって便利だよね!でも...

kintoneの添付ファイルフィールドを使うと、レコードにファイルを登録することができて、参考資料などを一緒に登録することもよくあります。
ところで、オプションを追加しない限りkintoneのディスク容量は5GB x ユーザ数になっています。最低ユーザ数が10なので、最低50GBです。(kintone料金 2025年10月現在)
すぐに使い切る容量ではありませんが、アプリ数が増えてきたりファイル共有的な使い方をしていると、心許ない容量ではあります。

kintoneのディスク容量

変更履歴の罠

kintoneのディスク容量の使用量には変更履歴や添付ファイルが計上されます。ちなみに、変更履歴の中には添付ファイルの追加や削除といった操作の内容も含まれるため、迂闊に添付するとディスク使用量をあっという間に消費してしまいます。
※参考:ディスク使用量を減らすにはどうすればいいですか?

やはり、NAS🍆が最強か?

NASなどにファイルを保存しておいて、そのフルパスをレコードに記載しておけば添付ファイルによる容量逼迫を回避できます。Dropboxなどのクラウドストレージサービスを使用すれば、社外からでもアクセスできて利便性が高いです。
とはいえ、ファイルだけはNASなどに保存した上でフルパスをレコードに記載するのは「ファイルの保存」と「レコードの作成」で手間がかかります。

ぼくのかんがえたさいきょうの外部ストレージとの連携

じゃぁ、ファイル登録時にkintoneへレコード登録をしちゃえばいいじゃん

対応方針は簡単。同時にできたらそれでいいじゃん、という思想です。
クラウドストレージサービスならプラグインで対応も可能ですが、サービスを使用していない場合は別途契約で追加費用となるため、WEBサーバと連携する方法を検討しました。
推奨はしませんが、コーポレートサイトで使用しているWEBサーバを流用することも可能です。

アップロードする時は

REST APIを使用すればcurlからレコード情報をkintoneへ登録できるので、PHPやJSで作ることができそうです。
ファイルをアップロードする際にUUIDを発行し、ファイル名をUUIDで保存しておけばファイル名の衝突を避けられそうです。また、ファイルの保存領域はHTTPアクセスできない領域にしておくほうが安全ですね。
ファイル名として使用しているUUIDを元にダウンロードする処理を実装すれば、ダウンロードURLをレコードに登録することでkintone上のリンクをクリックするだけでファイルを取得することができます。

なので、アップロード時の処理の詳細は以下の通り。

ダウンロードする時は

前述した通り、ダウンロードはUUIDを元にデータを取得できるようにすれば、良さそうです。となれば、URLパラメータにUUIDを指定するようにしましょう。
UUIDに合致するファイルが保存ディレクトリに存在する場合は、対象ファイルのデータを書き出せばダウンロードが可能です。

なので、ダウンロードの処理の詳細は以下の通り。

という訳で、完成品がこちら

ileUploader4KntnFileSv
ここからファイルをダウンロードし、kintoneのアプリ情報を記載することで連携可能です。
ちなみに、アップロードページの項目はkitoneのアプリのフィールド情報を自動取得します。フィールドを追加した場合でも入力フォーム側の追加作業は不要です。
逆に、除外したいフィールドコードや表示順を指定する定数もあるので、詳細はconfig.php.sampleを参考にconfig.phpを作成してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?