株式会社エクスブリッジ
取引先と見積・図面をやりとりする会社へ|期限つきリンクと取引先ごとのフォルダで受け渡し(Kurage ファイル共有)

取引先と見積・図面をやりとりする会社へ|期限つきリンクと取引先ごとのフォルダで受け渡し(Kurage ファイル共有)

2026年11月05日約8分で読めますファイル共有 自社サーバー

取引先とのファイル受け渡しを自社のサーバーで行う Kurage ファイル共有を作りました。取引先ごとの専用フォルダ、推測できない48桁の期限つき共有リンク、ブラウザが小分けにして送る大容量アップロード(1,024MB を13.2秒・実測)、ダウンロードの記録と通知。1ファイルの PHP と SQLite でレンタルサーバーで動きます。本番のレンタルサーバーでは WAF がランダムに近いバイナリのチャンクを止め(1MB で80本中15本)、同じ中身を base64 にすると全部通ることを実測したので、403 が返ったらそのファイルの残りを base64 で送り直す作りにしました。

この記事の答え

Kurage ファイル共有とは?

1ファイルのPHPとSQLiteで動作する、取引先とのファイル受け渡しシステムです。ログイン不要の期限付きリンクを使い、大容量ファイルの送受信やダウンロード回数の制限が可能です。

名古屋でAIシステムの開発をしている小嶋です。

当社のサイトには「ファイルサーバ オープンソース」「大容量ファイル 送信 自社サーバー」という検索で来る人がいます。図面やカタログ、動画の素材を取引先と受け渡しするのに、無料の転送サービスに上げるのは社内の決まりで止められている。メールに付けると容量で弾かれる。社内のファイルサーバーを外に開けるのは怖い。そういう会社が探している言葉です。そこで、取引先とのやり取りだけに絞ったファイル共有を作り、契約中のレンタルサーバーにそのまま置ける形にして、実際の回線で確かめました。

結論:取引先には「期限つきのリンク」だけを渡す

Kurage ファイル共有は、1ファイルの PHP と SQLite で動くファイル受け渡しのシステムです。取引先の会社名と担当者を登録すると専用のフォルダができ、取引先にはログイン不要の共有リンクだけを渡します。リンクごとに「送る(ダウンロードのみ)」「受け取る」「両方」を選べ、有効期限・ダウンロード回数・パスワードを付けられます。取引先は届いたリンクを開いて、ファイルを落とすか、「ここにファイルを置いてください」に置くだけです。

確かめたこと 結果
大きなファイル(社内の検証環境) 1,024MB を 1MB×1,024回に分けて 13.2秒(77.4MB/秒)
本番のレンタルサーバー(当社のデモ環境) 20MB を 4.9秒、100MB を 21.3秒。どちらも WAF に止められたあと自動で切り替えて完走
WAF に止められたチャンク ランダムに近い1MB で 80本中15本(19%)、64KB でも 150本中20本(13%)
同じ中身を base64 にしたとき 1MB 80本・64KB 150本すべて通過
自己テスト 86件すべて合格(関門・無害化・チャンク結合・容量・リンク・掃除・通知・記録・画面)
HTTP での一連の操作 51件の検査を通過
スマホ表示 320・360・390px の全画面で横はみ出し 0

取引先ごとのフォルダと、取引先が見る画面

管理画面では取引先ごとに担当者・メール・当社の担当・メモ・容量の上限を持ち、そのフォルダの中身に「送付」と「受け取り」の向き、置いた人、日時、保存期限、ダウンロード回数が並びます。ファイルの保存期限(既定30日)が来たら自動で消えるので、古い図面がいつまでも残ることがありません。

管理画面の取引先フォルダ。「みなと商事株式会社の受け渡しフォルダ」に担当者・当社の担当・容量(12.0MB / 2.00GB)が出て、フォルダの中身にブラウザから送った12MBのファイル・製品カタログ・価格表(送付)と注文データ(受け取り)が並んでいる

取引先が開くのは、自社名の入った受け渡しページだけです。「お渡しするファイル」と「ここにファイルを置いてください」が1画面にあり、スマホでも崩れません。誰がいつどのファイルを落としたか・置いたかは記録に残り、そのたびに管理者と担当の社員にメールで知らせます。取引先の担当者への案内メールは1クリックで送れます。

取引先が開く受け渡しページ(スマホ幅)。「みなと商事株式会社 様 ファイル受け渡しページ」に有効期限、お渡しするファイルとダウンロードのボタン、ファイルを置く枠が出ている

ファイルの実体はランダムな名前の .bin で保存するので、PHP のファイルを上げられても実行されません。データのフォルダは外から開けないようにしてあり、ログインとリンクのパスワードには回数の制限を付けています。

レンタルサーバーの WAF が、ランダムなバイナリだけを止めた

大きなファイルは、ブラウザが小分け(チャンク)にして送ります。レンタルサーバーの1回のアップロードの上限が 2MB のままでも 1GB 級が通るのはこのためで、チャンクの大きさはサーバーの設定から自動で決めます。社内の検証環境ではこれで 1,024MB が 13.2秒でした。

ところが、デモを置いている本番のレンタルサーバー(heteml)で送ると、途中のチャンクが「403 閲覧できません」で止まりました。レンタルサーバーに入っている WAF(不正な通信を止める仕組み)です。2026年11月5日に条件を変えて送り比べると、止まるのは圧縮ファイルや暗号化ファイル、画像や動画の中身のようなランダムに近いバイナリだけで、テキストやゼロ埋め、PDF の見本は止まりませんでした。ランダムな1MB のチャンクで 80本中15本、64KB に小さくしても 150本中20本が止まります。しかも同じ中身は時間を空けて何度送っても止まるので、連投や回数ではなく中身で判定されていることになります。

試しに同じ中身を base64(文字だけの表現)にして送ると、1MB の80本も 64KB の150本もすべて通りました。そこで本体は、チャンクが WAF の 403(システムからの応答ではない画面)で返ってきたら、そのファイルの残りのチャンクを base64 で送り直すようにしました。送る量は約1.34倍に増えますが、取引先は何もしなくて済みます。通信エラーやサーバーのエラーは 1・2・4・8・16秒待って最大5回やり直し、base64 にしてもサーバーの上限に収まるよう、チャンクの大きさも自動で決め直します。本番のレンタルサーバーで 100MB を送った実測では、途中で1回切り替わり、21.3秒で完走しました。

WAF をこのフォルダだけ外せば速くはなりますが、ほかの守りも弱くなります。外すかどうかはお客様の判断として、外さなくても送れる作りを既定にしました。

踏んだ穴(6つ)

  1. レンタルサーバーの WAF がランダムに近いバイナリのチャンクを止める。同じ中身は何度送っても止まる
  2. WAF の 403 はシステムの JSON ではなくサーバーの画面で返ってくる。応答の形で WAF かどうかを見分ける
  3. base64 にすると約1.34倍に膨らむので、チャンクの大きさを決め直さないとサーバーの上限を超える
  4. 期限切れの掃除をアクセスの時だけにすると、誰も来ない時間帯に古いファイルが残る。アクセス時に10分ごと+cron で消す
  5. PHP がファイルを書くので、レンタルサーバーの PHP の動かし方によってはデータのフォルダに書けなくなる。設置の手順で動かし方を指定している
  6. 配信を PHP 経由にしないと直リンクで落とせてしまう。ストリームで返し、途中からの再開(Range)にも対応した

出品しました

デモは Kurage ファイル共有 デモ で、管理画面と取引先の受け渡しページの両方を触れます。

本体に加えて、SMTP の設定、容量と期限の決め方、取引先への案内文、カスタマイズ用の AI プロンプトを入れた構築・運用の手順書を付けて、Kurage App Store に出しました。

取引先とのファイル受け渡しを自社サーバーで — Kurage ファイル共有(期限つきリンク・大容量・取引先ごとのフォルダ)

自社のサーバーに合わせた設置や、社内のファイルサーバーとどう分けるかの相談は、業務システムの相談からどうぞ。

よくある質問

レンタルサーバーのWAFでアップロードが止まる場合はどうなりますか?

WAFでバイナリデータが遮断された場合、システムが自動でbase64に切り替えて再送します。取引先側での操作は不要です。

ファイルの保存期限やセキュリティはどうなっていますか?

ファイルには有効期限(既定30日)があり、期限が来ると自動で削除されます。また、実体はランダムな名前の.binで保存され、外部から開けないよう保護されています。

スマホでも利用できますか?

はい、取引先の受け渡しページはスマホでも崩れないように設計されています。

業種・業務ごとに、自社用のシステムを考える

業種と業務の組み合わせごとに、よくある悩み、オープンソースや当社の業務アプリでの解き方、費用をまとめています。

前後の記事

読んで、自分でやるか任せるか

記事のとおりに進めて詰まったら、そこから先は任せてください。名古屋の会社です。概算見積は無料です。

名古屋で頼むなら:システム開発 名古屋(頼み方と料金) ホームページ制作 名古屋

開発会社・IT販売の方へ

この記事に出てくるシステムは、御社の案件で売ったり、御社の製品に組み込んだりできます。ソースコードは MIT ライセンスで、御社のブランドでの販売もできます。販売手数料は、バイブプロトタイプ制作で1件9万円、バイブOSSで1件3万円(いずれも税別)、App Store の製品は本体価格の10%です。登録無料・ノルマなし。

Kurage.AIKurage.AI に相談AIが何でも答えます