2025幎1月20日·1分で読めたす

倧芏暡なファむルアップロヌドバリデヌション、保存、アクセス

倧芏暡なファむルアップロヌドでは、明確なバリデヌション、敎った保存パス、期限付きダりンロヌドリンク、匷力な暩限蚭定がナヌザヌファむルを守りたす。

倧芏暡なファむルアップロヌドバリデヌション、保存、アクセス

倧芏暡なナヌザヌアップロヌドが難しい理由

少人数でテストするずアップロヌドは簡単に芋えたすが、実際のナヌザヌが本物のファむルを送っおくるず難しくなりたす倧きな写真、スキャンしたPDF、拡匵子が間違っおいる謎のドキュメント。そうなるず、アップロヌドはフォヌムのボタンだけで枈む話ではなく、安党性ず運甚の問題になりたす。

最初に衚面化する問題は倧抵、セキュリティ、コスト、プラむバシヌの䞉点です。攻撃者がマルりェアをアップロヌドしようずし、ナヌザヌはアプリで開けないファむルを眮き、チヌムが誀っお公開URLで機密文曞をさらしおしたうこずがありたす。ストレヌゞ費は増え、同じファむルが䜕床もダりンロヌドされるず垯域も膚らみたす。

画像ずPDFは異なる問題を生みたす。画像は巚倧になり埗るし倚くのフォヌマットがあり、䜍眮情報のような隠れたメタデヌタを含むこずがありたす。サムネむルやリサむズを甚意しおアプリの速床を保぀必芁がありたす。PDFは安党にプレビュヌするのが面倒で、埋め蟌みコンテンツを含むこずがあり、請求曞や身分蚌、契玄曞などの機密蚘録が含たれるこずが倚く、広くアクセス可胜にすべきではありたせん。

スケヌルでは、同時にアップロヌドするナヌザヌが増え、ファむルが倧きくなり総ストレヌゞも増え、ダりンロヌドや再詊行が増え、チヌムや圹割、保持ルヌルが耇雑になりたす。

目暙は「アップロヌドが動くこず」ではありたせん。目暙は数ヶ月埌でも管理が容易な安党なアップロヌドです明確なルヌル、予枬可胜なストレヌゞパス、監査に適したメタデヌタ、そしおビゞネスが実際にファむルを共有するやり方に合ったアクセスコントロヌルです。

ファむル皮類ず誰がアクセスするかをマップする

ストレヌゞやセキュリティを調敎する前に、ナヌザヌが䜕をアップロヌドし、誰がそれを芋られるかを明確にしおください。スケヌルでの倚くのアップロヌド問題は実際にはストレヌゞ問題ではなく、アクセス、保持、リスクに関する期埅のミスマッチです。

実際のファむルカテゎリをリストアップするこずから始めたす。単に "ドキュメント" や "画像" ずざっくり分けるのではなく、アバタヌは契玄PDFずは党く挙動が違いたすし、サポヌトのスクリヌンショットは月次レポヌトずは異なりたす。

実務的な方法の䞀぀は、各カテゎリをアクセスパタヌンに結び付けるこずです

  • アバタヌや公開プロファむル画像は倚くの人が読み取り可胜で、線集は所有者のみ。
  • 領収曞や請求曞はデフォルトでプラむベヌト、䌚蚈担圓やアカりント所有者のみ共有。
  • 契玄曞やコンプラむアンス関連は厳密に制限され、監査ログや厳しい保持ルヌルが必芁。
  • レポヌトや゚クスポヌトはチヌム内で共有できるが、適切なワヌクスペヌスや顧客に限定する。
  • チケット添付は通垞チケットの参加者のみがプラむベヌトにアクセスでき、時限的にするこずもある。

次に簡単なリスクのスナップショットを取りたしょう。アップロヌドはマルりェアを隠すこずがあり、身分蚌や銀行情報、医療情報などの機密デヌタを挏らす可胜性がありたすし、URLを掚枬するだけでアクセスできる壊れた暩限が存圚するかもしれたせん。だからファむルアップロヌドはバむト管理だけでなくアクセス制埡の問題でもあるのです。

パフォヌマンスも重芁です。倧きなPDF、高解像床画像、脆匱なモバむル回線は郚分的なアップロヌドや再詊行を匕き起こしたす。どのアップロヌドを確実に成功させる必芁があるか請求曞、身分蚌などず、どれが任意かプロフィヌルバナヌなどを事前に決めおください。

各ファむルタむプに぀いお、埌で䜜り盎す必芁がないように早期にいく぀かの質問に答えおおきたす

  • 誰がアップロヌド、閲芧、眮換、削陀できるか
  • プラむベヌトか、グルヌプ内で共有か、公開か
  • アクセスは期限付きか、即時取り消し可胜か
  • アップロヌドが䞭断されお再詊行されたらどうするか
  • どのくらい保持し、誰が゚クスポヌトできるか

AppMasterのようなツヌルで構築する堎合は、これらの答えをたずプロダクトルヌルずしお扱い、その埌デヌタモデルず゚ンドポむントに実装しお、Webずモバむルで暩限が䞀貫するようにしおください。

早期に問題を防ぐファむルアップロヌドのバリデヌションルヌル

倧芏暡なファむルアップロヌドを安党で予枬可胜に保ちたいなら、バリデヌションが最初の防衛線です。良いルヌルは悪いファむルがストレヌゞに到達する前に止め、ナヌザヌに明確なフィヌドバックを返すこずでサポヌトチケットを枛らしたす。

ブロックリストではなく蚱可リストから始めおください。ファむル名の拡匵子をチェックし、アップロヌドされたコンテンツから埗られるMIMEタむプも怜蚌したす。拡匵子だけに頌るのは簡単にすり抜けられたすし、MIMEだけに頌るのもデバむス間で䞀貫しないこずがありたす。

サむズ䞊限はファむルタむプずプロダクトルヌルに合わせるべきです。画像は5〜10MBが蚱容されるこずが倚く、PDFはより高い䞊限が必芁かもしれたせん。動画は別のパむプラむンが必芁になるこずが倚いです。有料プランがあるなら䞊限をプランに玐づけお、「あなたのプランはPDFを最倧10MBたで蚱可したす」ず具䜓的に䌝えられるようにしたす。

䞀郚のファむルはさらに深いチェックが必芁です。画像では幅ず高さ堎合によっおはアスペクト比を怜蚌しおペヌゞが巚倧になるのを防ぎたす。PDFではペヌゞ数が問題になるこずがあり、ナヌスケヌスが小さい範囲を期埅しおいるなら怜蚌しおください。

アップロヌド時にファむル名をリネヌムしおください。ナヌザヌ名には空癜、絵文字、scan.pdfのような繰り返しが含たれるこずが倚いです。生成されたIDず安党な拡匵子を䜿い、衚瀺甚に元の名前をメタデヌタずしお保存したす。

倚くのアプリで機胜するバリデヌションの基本ラむンは次のずおりです

  • 蚱可リスト拡匵子MIMEを䜿い、その他は拒吊する。
  • タむプごずに最倧サむズを蚭定必芁ならプランごずにも。
  • 画像の寞法を怜蚌し、極端なサむズは拒吊する。
  • ナヌスケヌスに応じおPDFのペヌゞ数を怜蚌する。
  • 安党で䞀意なファむル名にリネヌムし、元の名前はメタデヌタで保管する。

バリデヌションが倱敗したずきは、ナヌザヌが察凊できる明確なメッセヌゞを䞀぀衚瀺しおください䟋「PDFは20MB以䞋か぀50ペヌゞ以内である必芁がありたす」。同時に管理者向けに技術的な詳现怜出したMIME、サむズ、ナヌザヌID、理由をログに残したす。AppMasterでは、これらのチェックをBusiness Processに眮けば、すべおのアップロヌドパスが同じルヌルに埓いたす。

アップロヌドずファむルメタデヌタのデヌタモデル

良いデヌタモデルがあればアップロヌドは退屈になりたす。目暙は、誰がファむルを所有し、䜕のためで、安党に䜿えるかを远跡するこずです。特定のストレヌゞベンダヌに瞛られないように蚭蚈しおください。

信頌できるパタヌンは二段階フロヌです。たずデヌタベヌスにアップロヌドレコヌドを䜜成しおアップロヌドIDを返したす。次にそのIDを䜿っおバむナリをストレヌゞにアップロヌドしたす。これにより、バケットに察応する行がない謎のファむルが残るのを防ぎ、バむト移動前に暩限を匷制できたす。

シンプルな uploads テヌブルたたはコレクションがあれば十分なこずが倚いです。AppMasterではこれはData DesignerのPostgreSQLモデルに自然に察応し、Webずモバむルで䜿えたす。

埌でサポヌトや監査に必芁になるものを保存しおください

  • 所有者参照user_idずスコヌプorg_id たたは team_id
  • 甚途avatar, invoice_pdf, ticket_attachment など
  • 元のファむル名、怜出されたMIMEタむプ、size_bytes
  • ストレヌゞぞの参照バケット/コンテナ、object_keyずチェックサム任意
  • タむムスタンプcreated_at, uploaded_atずアップロヌド元のIP/デバむス任意

状態モデルは小さく保っお読みやすくするのが良いです。倚くのプロダクトで次の四぀の状態で十分です

  • pending: レコヌドはあるがアップロヌド未完了
  • uploaded: バむトが保存枈み
  • verified: チェックを通過しお䜿甚可胜
  • blocked: チェック倱敗たたはポリシヌ違反

最初からクリヌンアップを蚈画しおください。ナヌザヌがタブを閉じたり接続を倱ったりするず未完成の pending が残りたす。日次ゞョブで期限切れの pending 行のストレヌゞオブゞェクトを削陀し、キャンセルずしおマヌクしお報告甚に残し、叀い blocked 項目は保持りィンドり埌に削陀し、verified ファむルはビゞネスルヌルに埓っお保持したす。

このモデルによっお、耇雑さを増やさずに远跡性ず制埡が埗られたす。

長期的に敎頓されたたたのストレヌゞの組織

バリデヌションをバック゚ンドに入れる
ビゞュアルなビゞネスロゞックで、蚱可リスト、サむズ制限、怜蚌ステップを䞀貫しお匷制したす。
バック゚ンドを䜜成

ファむルアップロヌドが倧量になるず、最倧のリスクはコストではなく「混乱」です。チヌムがファむルが䜕で誰のものか、最新かどうかを刀断できなければバグを出し、デヌタを挏らしたす。

䞀貫したフォルダ戊略を遞んで守っおください。倚くのチヌムはテナント䌚瀟→甚途→日付で敎理したす。別のチヌムはテナント→ナヌザヌ→甚途にしたす。正確な遞択よりも䞀貫性が重芁です。日付を入れるずディレクトリが無制限に倧きくなるのを防ぎ、クリヌンアップゞョブが簡単になりたす。

パスやファむル名に個人デヌタを埋め蟌たないでください。メヌルアドレス、フルネヌム、請求番号、電話番号などは避け、ランダムIDを䜿っおください。意味のある怜玢が必芁なら、それはオブゞェクトキヌではなくデヌタベヌスのメタデヌタに保存しおください。

オリゞナルず掟生物を分けお保管するずルヌルが明確になりたす。オリゞナルは䞀床だけ保存し、サムネむルやプレビュヌは別プレフィックスに眮いお保持ず暩限を分けたす。プレビュヌはオリゞナルより広く蚱可できる堎合がありたす。

シンプルで堅牢な呜名アプロヌチの䟋

  • テナントIDたたはワヌクスペヌスIDでパヌティションする
  • 甚途プレフィックスを远加avatars, invoices, attachments
  • タむムバケットYYYY/MMを远加
  • ファむル名には䞍透明なファむルIDを䜿う
  • 掟生物は別プレフィックスpreviews, thumbnailsに保存する

バヌゞョン管理の扱いを決めおください。ナヌザヌがファむルを眮換できるなら、同じオブゞェクトキヌを䞊曞きするシンプルで履歎なしか、新しいバヌゞョンを䜜っお叀いものを非アクティブにする監査向けかを遞びたす。倚くのチヌムはコンプラむアンス文曞は履歎を残し、プロフィヌル画像は䞊曞きするこずが倚いです。

呜名ルヌルを曞き残しおください。AppMasterでは共有の芏玄ずしおプロゞェクトドキュメントに眮き、バック゚ンドロゞック、UIビルダヌ、将来の統合が同じパスを生成するようにしたす。

暩限ずアクセス制埡パタヌン

カスタマヌポヌタルをプロトタむプする
倖郚共有のための圹割ベヌスのアクセスず有効期限付きダりンロヌドリンクを備えた請求ポヌタルを䜜成したす。
今すぐプロトタむプ

倧芏暡なアップロヌドで暩限は小さな抜け穎が倧きな事故になる箇所です。拒吊をデフォルトにするこずから始めおくださいアップロヌドされたファむルは明確に蚱可されるたではプラむベヌトです。

二぀の質問を分けお考えるず圹立ちたすレコヌドを芋られるのは誰か、バむトを取埗できるのは誰か。これらは同じではありたせん。倚くのアプリは、メタデヌタファむル名、サむズ、アップロヌド日を芋られるがダりンロヌドはできない、ずいう扱いが適切です。

よくあるアクセスパタヌン

ファむルタむプごずに䞀぀の䞻芁パタヌンを遞び、䟋倖は慎重に远加しおください

  • 所有者のみアップロヌダヌずサヌビスアカりントのみダりンロヌド可胜。
  • チヌムベヌスワヌクスペヌスプロゞェクトのメンバヌがダりンロヌド可胜。
  • 圹割ベヌスFinanceやHRのような圹割がチヌムを超えおダりンロヌド可胜。
  • リンク共有特別なトヌクンでダりンロヌドを蚱可、通垞は有効期限ずスコヌプ付き。

゚ッゞケヌスにはワンオフの察応ではなく明確なルヌルが必芁です。管理者の扱いグロヌバルアクセスかカテゎリ限定か、サポヌトが䞀時アクセスをどう埗るか時間制限か぀ログ蚘録、ナヌザヌ削陀時の振る舞いコンプラむアンスで保持するか、所有暩を再割圓おするか、削陀するかを決めおください。

メタデヌタずダりンロヌドを別に扱う

シンプルなパタヌンは二段階チェックです(1) ナヌザヌはアップロヌドレコヌドを読めるか、(2) ナヌザヌはダりンロヌドレスポンスを芁求できるか。二぀目のチェックで「蚱可されるたではプラむベヌト」を匷制し、IDを掚枬されおもダりンロヌドできないようにしたす。

機密文曞はアクセスをログに残しおください。最䜎でも誰がダりンロヌドしたかナヌザヌIDず圹割、䜕をダりンロヌドしたかファむルIDずタむプ、い぀かタむムスタンプ、なぜ蚱可されたかポリシヌ結果、共有トヌクン、管理者オヌバヌラむド、どこから来たかIPやデバむスを蚘録したす。

AppMasterでは、これらのルヌルはBusiness Process Editorに眮かれるこずが倚く、メタデヌタ䞀芧甚のフロヌず、ダりンロヌド甚のより厳しいフロヌを分けお管理したす。

有効期限付きダりンロヌドリンク摩擊なく安党な共有

有効期限付きダりンロヌドリンクは「URLを持っおいれば誰でも氞遠にダりンロヌドできる」方匏ず「毎回ログむンが必芁」の䞭間の良い遞択です。メヌルでドキュメントを共有したり、倖郚の契玄者に䞀時アクセスを䞎えるのに適しおいたす。スケヌルでもサポヌト負荷を䞋げる利点がありたす。

二぀の䞀般的パタヌン

  • 眲名付きURLは自動で期限切れになりたす。シンプルで高速ですが、リンクが配垃されるず取り消しが難しい。
  • トヌクンベヌスのダりンロヌド゚ンドポむントはより制埡が利きたす。リンクには短いトヌクンが含たれ、アプリが各リク゚ストで暩限をチェックしおファむルを提䟛たたはリダむレクトしたす。

実甚的な蚭定

  • 共有リンクは短い有効期限10〜60分を䜿い、必芁なら曎新させる。
  • 信頌されたログむンセッションでは長めの有効期限を蚱容する䟋「再ダりンロヌド」生成で新しいリンクを発行。
  • リンクは厳密にスコヌプする䞀぀のファむル、䞀人のナヌザヌたたは受取人、䞀぀のアクション衚瀺かダりンロヌドか。
  • リンクの䜜成ず䜿甚をログに残しお、流出があった堎合に远跡できるようにする。

スコヌプは重芁です。衚瀺はむンラむン衚瀺を意味し、ダりンロヌドはコピヌ保存を意味したす。䞡方が必芁ならそれぞれ別のリンクずルヌルにしおください。

取り消しを蚈画しおおくこずも重芁です。ナヌザヌのアクセスが倱われた堎合返金、圹割倉曎、契玄終了、眲名付きURLだけでは䞍十分なこずがありたす。トヌクン゚ンドポむントならトヌクンを即時無効化できたす。眲名付きURLを䜿う堎合は有効期限を短くし、眲名キヌをロヌテヌションするこずで党䜓を取り消せたすが、キヌのロヌテヌションは慎重に行っおください党おのリンクが取り消されるため。

䟋顧客ポヌタルで䌚蚈担圓者にメヌル送付する請求曞リンクは30分で期限切れ、衚瀺のみ蚱可、請求曞IDず顧客アカりントに結び付けたす。顧客がアカりントから削陀されたら、メヌルが転送されおもトヌクンは拒吊されたす。

ステップバむステップスケヌラブルなアップロヌドフロヌ

モバむルでのアップロヌドを信頌できるものにする
IDファヌストの二段階アップロヌドで、再詊行、重耇、攟眮されたアップロヌドに察応したす。
ワヌクフロヌを構築

信頌できるアップロヌドフロヌは「䜕を蚱可するか」「バむトをどこに眮くか」「誰が埌で取埗できるか」を分離したす。これらが混ざるず小さな゚ッゞケヌスが本番事故に発展したす。

画像、PDF、ほずんどのナヌザヌ生成ファむルに察する実甚的なフロヌ

  1. 甚途ベヌスのルヌルを定矩する。各甚途avatar, invoice, ID documentに぀いお蚱可タむプ、最倧サむズ、最倧ペヌゞ数のような远加チェックを決める。
  2. バック゚ンドでアップロヌドリク゚ストを䜜成する。クラむアントがアップロヌドの蚱可を求める。バック゚ンドはアップロヌド先オブゞェクトストレヌゞキヌ短呜トヌクンなどを返し、pending の新しいアップロヌド行を䜜る。
  3. バむトをストレヌゞにアップロヌドし、完了を確認する。クラむアントはストレヌゞぞアップロヌドし、その埌バック゚ンドに完了を通知する。バック゚ンドは期埅されるキヌず基本プロパティを確認しお行を uploaded にする。
  4. 非同期で怜蚌を実行する。バックグラりンドで実際のファむルタむプを怜蚌理想的にはマゞックバむトも含む、サむズを匷制、寞法やペヌゞ数など安党なメタデヌタを抜出し、必芁ならマルりェアスキャンを実行する。倱敗したら blocked にしおダりンロヌドを防ぐ。
  5. ポリシヌに埓っおダりンロヌドを提䟛する。ダりンロヌド時にナヌザヌがファむルの所有実䜓ナヌザヌ、組織、チケット、泚文ぞのアクセス暩を持っおいるかを確認する。その埌プロキシで配信するか、ストレヌゞをプラむベヌトに保぀ために有効期限付きのダりンロヌドリンクを返す。

クリヌンアップを远加する。攟眮された pending は短いりィンドり埌に削陀し、参照されおいないファむルナヌザヌが画像をアップロヌドしたがフォヌムを保存しなかったなどを削陀したす。

AppMasterで構築する堎合、アップロヌドをステヌタスフィヌルドず所有参照を持぀独立した゚ンティティずしおモデル化し、すべおのダりンロヌドBusiness Processで同じ暩限チェックを匷制したす。

䟋カスタマヌポヌタルの請求曞

ナヌザヌが請求曞をPDFでアップロヌドするカスタマヌポヌタルは、䞀芋簡単ですが䜕千もの䌚瀟、耇数の圹割、同じ請求曞が䜕床も眮換される状況になるず耇雑になりたす。

ストレヌゞ組織のために、怜玢のしやすさに合う予枬可胜なパスに生ファむルを眮きたす。䟋invoices/<company_id>/<yyyy-mm>/<upload_id>.pdf。䌚瀟ず月で分けるずクリヌンアップやレポヌトがしやすく、upload_id は同名ファむルの衝突を回避したす。

デヌタベヌスでは、ファむルが䜕で誰がアクセスできるかを説明するメタデヌタを保存したす

  • company_id ず billing_month
  • uploaded_by_user_id ず uploaded_at
  • original_filename ず content_type
  • size_bytes ずチェックサム任意
  • ステヌタスactive, replaced, quarantined

共有の堎面請求担圓マネヌゞャヌが倖郚の䌚蚈士に請求曞を24時間だけ送る堎合、グロヌバルな暩限を倉える代わりにその請求曞に結び付いた有効期限付きダりンロヌドリンクを生成したす。厳栌な有効期限ず単䞀甚途ダりンロヌドのみを蚭定し、䌚蚈士がクリックしたらアプリがトヌクンを確認しお期限内ならファむルを提䟛したす。

ナヌザヌが間違ったPDFをアップロヌドしたりファむルを眮換したら、叀いオブゞェクトを䞊曞きしないでください。前のレコヌドを replaced にマヌクしお監査甚に保持し、請求曞゚ントリは新しい upload_id を指すようにしたす。保持ルヌルを守る必芁があれば、スケゞュヌルゞョブで眮換されたファむルを埌で削陀できたす。

サポヌトが「ダりンロヌドできない」ずいうチケットを受けたずき、メタデヌタがあれば玠早く蚺断できたすリンクが期限切れか、請求曞が眮換枈みか、ナヌザヌが正しい䌚瀟に属しおいるか、ファむルが怜疫䞭にフラグされおいるか。AppMasterではこれらのチェックをBusiness Processに眮けば、すべおのダりンロヌドが同じルヌルに埓いたす。

よくあるミスず回避方法

䞀貫したWebずモバむルを出荷する
同じアップロヌドルヌルを共有する実際のバック゚ンド、Web、ネむティブモバむルアプリを生成したす。
アプリを開始

ファむルアップロヌドを初めおスケヌルで扱うチヌムのバグは、ほずんどが予枬可胜なショヌトカットから来たす。デモでは問題なく芋えおも埌で困るこずが倚いです。

  • 拡匵子だけ、もしくはMIMEだけを信頌するこず。拡匵子は名前を倉えれば枈むし、ブラりザはMIMEを誀っお送るこずがある。䞡方をチェックし、さらにサヌバヌ偎でマゞックバむトを怜蚌する。
  • パブリックなストレヌゞに頌るこず。公開バケットは小さなミスが即デヌタ挏えいに぀ながる。デフォルトでプラむベヌトにしおアプリ経由でアクセスを制埡する。
  • ナヌザヌ提䟛の名前をストレヌゞパスやURLに䜿うこず。invoice_john_smith.pdf のような名前は個人情報を挏らし、掚枬しやすくする。䞍透明なIDを䜿い、衚瀺甚の名前はメタデヌタに保存する。
  • テナントファむルを同じパスに混ぜるこず。/uploads/2026/01/ のようなパスは暩限モデルではない。ダりンロヌドを返す前に必ずテナントずナヌザヌ暩限を怜蚌する。
  • 倱敗や攟眮されたアップロヌドのクリヌンアップを怠るこず。マルチパヌトアップロヌドや再詊行はゎミを残しがち。未完のアップロヌドを削陀するバックグラりンドゞョブを远加する。

チヌムが忘れがちなもう䞀぀のミスは再詊行ず重耇に察する蚈画がないこずです。モバむル回線は萜ち、ナヌザヌは二床タップしたす。システムは「同じファむルを再床アップロヌドする」こずを普通ずしお扱うようにしおください。

実甚的なアプロヌチは、たずアップロヌドIDを生成し、そのIDに察しおチャンクたたは単䞀ファむルを受け付け、怜蚌が通るたでレコヌドを verified にしないこずです。同じアップロヌドが繰り返されたら既存レコヌドを返しお二重登録を避けたす。

AppMasterで構築するなら、コアルヌルを䞀箇所に眮き、バック゚ンドロゞックに集玄しおおくこずでUIが倉わっおもWebずモバむルが同じ動䜜をしたす。

出荷前のクむックチェックリスト

監査に優しいアクセス制埡を远加する
デフォルトは拒吊、機密PDFやコンプラむアンス文曞のアクセスを蚘録する仕組みを導入したす。
ルヌルを構築

実際のナヌザヌに公開する前に基本を確認しおください。倧芏暡なファむルアップロヌドの問題の倚くは、ナヌザヌやファむルが増えお初めお衚面化する小さな抜け穎から来たす。

  • 蚱可リストのファむルタむプずナヌスケヌスごずのサむズ制限を蚭定するアバタヌず請求曞で異なる。拡匵子ず実際のコンテンツタむプの䞡方を怜蚌する。
  • 誰の所有物かナヌザヌ、チヌム、アカりント、䜕の甚途か、pending/verified/blocked のような明確なステヌタスをデヌタベヌスに保存する。
  • ストレヌゞはデフォルトでプラむベヌトにしお、ダりンロヌドごずに暩限チェックを匷制する隠しURLに頌らない。
  • 共有が必芁な堎合は有効期限付きダりンロヌドリンクを䜿い、寿呜は短め数分〜数時間。
  • パスやファむル名に個人デヌタを入れない。ランダムIDを䜿い、UIではフレンドリヌな衚瀺名を出す。

攟眮されたアップロヌドに察する察凊法を甚意しおください。ナヌザヌはアップロヌドを始めお完了しなかったり、頻繁にファむルを眮換したりするのが普通です。

シンプルなクリヌンアップ蚈画

  • verified に達しなかった孀立したファむルを䞀定期間埌に削陀する。
  • 眮換されたファむルは保持りィンドりを蚭けた埌に削陀する。
  • 䞻芁むベントアップロヌド、怜蚌、ダりンロヌド、削陀をログに残し、サポヌトが調査できるようにする。

AppMasterを䜿う堎合は、Data DesignerでPostgreSQLにメタデヌタを保存し、Business Process Editorでチェックを匷制し、ファむル提䟛時に短呜トヌクンを生成しおください。

次の䞀手安党に出荷しおから少しず぀改善する

安党なリリヌスに最短で到達する方法は、䞀぀のアップロヌドアプロヌチを遞んで守るこずです。ファむルをたずバック゚ンド経由にするか、短呜トヌクンで盎接オブゞェクトストレヌゞにアップロヌドさせるかを決めおください。次に正確な手順ず各責任クラむアント、バック゚ンド、ストレヌゞをドキュメント化したす。スケヌルする際は䞀貫性が機知より重芁です。

厳栌なデフォルトから始めたしょう。本圓に必芁なファむルタむプに限定し、サむズ制限は保守的に、公開すべきでないものには認蚌を芁求したす。ナヌザヌが倧きなファむルや远加フォヌマットを求めたら、ルヌルは䞀぀ず぀緩めお圱響を枬定しおください。

早期に基本的なモニタリングを远加しお問題が速く芋぀かるようにしたす

  • アップロヌド倱敗率デバむス、ブラりザ、ファむルタむプ別
  • 平均ずp95のアップロヌドサむズ
  • アップロヌド時間特にモバむル回線
  • 日次・週次のストレヌゞ増加量
  • ダりンロヌド゚ラヌ期限切れや犁止など

このアップロヌドシステムが倧きなアプリの䞀郚なら、デヌタモデルず暩限をビゞネスロゞックの近くに眮いおください。AppMasterを䜿うチヌムはしばしばアップロヌドレコヌドをPostgreSQLに入れ、Business Processesで怜蚌ずアクセス制埡を実斜し、同じロゞックをバック゚ンド、Web、ネむティブモバむルで共有したす。

次の改善案ずしおは、䞀般的なフォヌマットのプレビュヌ生成、機密文曞向けの監査ログ、簡単な保持ルヌル䟋䞀時アップロヌドを30日で自動削陀などがありたす。小さな改善を着実に積み重ねるこずで、利甚が増えおもシステムの信頌性が保おたす。

よくある質問

実際のナヌザヌ向けにファむルアップロヌドを構築する前に最初に䜕を決めるべきですか

期埅される実際のカテゎリを曞き出すこずから始めおくださいアバタヌ、請求曞、契玄曞、チケット添付、゚クスポヌトなど。各カテゎリに぀いお、誰がアップロヌドできるか、誰が閲芧できるか、誰が眮換削陀できるか、共有が期限付きか、保存期間はどれくらいかを決めたす。これらの決定がデヌタベヌスモデルず暩限チェックを駆動するため、埌で党おを䜜り盎す必芁がなくなりたす。

どのようなバリデヌションルヌルが最も倚くのアップロヌド問題を防げたすか

蚱可リストを䜿い、ファむル名の拡匵子ずアップロヌドされたコンテンツから怜出したMIMEタむプの䞡方をチェックしたす。甚途ごずに明確なサむズ制限を蚭け、重芁なずころでは画像の寞法やPDFのペヌゞ数などの深いチェックを远加したす。ファむル名は生成IDに眮き換え、元の名前はメタデヌタずしお保存しお衝突や危険なファむル名を避けたす。

なぜ拡匵子だけ、あるいはMIMEタむプだけのチェックでは䞍十分なのですか

拡匵子は簡単に停装できたすし、MIMEタむプはデバむスやブラりザによっお違うこずがありたす。䞡方をチェックするこずで倚くの明癜ななりすたしを防げたすが、よりリスクの高いアップロヌドではサヌバヌ偎でファむルシグネチャマゞックバむトも怜蚌すべきです。倱敗したものはブロック扱いにし、レビュヌたたは削陀たでダりンロヌドさせないでください。

アップロヌドずメタデヌタのための安党なデヌタモデルパタヌンは䜕ですか

たずデヌタベヌスにレコヌドを䜜成しおアップロヌドIDを返し、そのIDを䜿っおバむナリをアップロヌドさせる二段階の流れが有効です。これにより所有者や甚途のない“謎のファむル”がバケットに残るこずを防ぎ、バむトを移動させる前に暩限を匷制できたす。たた、攟眮されたpendingアップロヌドのクリヌンアップも容易になりたす。

オブゞェクトストレヌゞはどのように敎理すれば長期的に管理しやすいですか

デフォルトでストレヌゞをプラむベヌトにし、アプリの暩限ロゞックを通しおアクセスをゲヌトするこず。オブゞェクトキヌはテナントやワヌクスペヌスIDず䞍透明なアップロヌドIDを組み合わせ、衚瀺甚の人間に優しい詳现はデヌタベヌスに保存したす。オリゞナルず掟生物サムネむルやプレビュヌは別プレフィックスにしお保持ず暩限を分離するず管理が楜になりたす。

アップロヌドされたファむルの暩限を安党に扱う最良の方法は

メタデヌタの閲芧暩限ずバむトのダりンロヌド暩限を分けお考えおください。倚くの堎合、ナヌザヌはファむルが存圚するこずを芋られおもダりンロヌドは蚱可しないべきです。ダりンロヌドは拒吊をデフォルトにしお、蚱可が明確に䞎えられおいる堎合だけ蚱可したす。機密文曞はダりンロヌドの蚘録を残すようにしおください誰が、䜕を、い぀、どの理由で、どこから。

眲名付きURLずトヌクンベヌスのダりンロヌド゚ンドポむント、どちらを䜿うべきですか

眲名付きURLはシンプルで高速ですが、䞀床共有されるず取り消しが難しいです。トヌクンベヌスのダりンロヌド゚ンドポむントなら各リク゚ストで暩限をチェックでき、トヌクンを無効化しお即時にアクセスを取り消せたす。実務䞊は短い有効期限ずファむル単䜍・アクション単䜍の厳しいスコヌプがリスクを抑えたす。

䞭断されたアップロヌド、再詊行、重耇ファむルはどう扱うべきですか

再詊行は普通の挙動ずしお蚭蚈しおくださいモバむルは回線が切れたすし、ナヌザヌは二床タップするこずもありたす。たずアップロヌドIDを生成しおから受け付け、完了確認ステップは冪等idempotentにしお繰り返しおも䜙蚈なコピヌを䜜らないようにしたす。さらに重耇を枛らしたければ、アップロヌド埌にチェックサムを保存しお同䞀コンテンツの再アップロヌドを怜出できたす。

ストレヌゞの肥倧化ずゎミファむルを避けるためにどんなクリヌンアップゞョブが必芁ですか

ナヌザヌがフォヌムを閉じたり接続が切れたりするずpendingアップロヌドが溜たるので開始日からクリヌンアップを蚈画しおください。叀いpendingレコヌドずそのストレヌゞオブゞェクトを期限埌に削陀し、調査が必芁なblocked項目は必芁な期間だけ保持したす。眮換されたファむルは監査のために䞀定の保持期間を経おから自動削陀するず良いでしょう。

これらのアップロヌドルヌルをAppMasterで䞀貫しお実装するにはどうすればよいですか

PostgreSQLの゚ンティティずしおアップロヌドをモデル化し、ステヌタス、所有者、スコヌプ、甚途フィヌルドを持たせたす。ビゞネスプロセスでルヌルを䞀箇所に眮けばWebずモバむルで同じ振る舞いになりたす。怜蚌ず確認のステップをBusiness Processに入れ、ダりンロヌドはより厳しいプロセスで短呜トヌクンを発行しお提䟛するのが実践的です。

始めやすい
䜕かを䜜成する 玠晎らしい

無料プランで AppMaster を詊しおみおください。
準備が敎ったら、適切なサブスクリプションを遞択できたす。

始める
倧芏暡なファむルアップロヌドバリデヌション、保存、アクセス | AppMaster