4
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?

OutSystemsでファイルアップロード時に 拡張子・ファイルサイズ・ファイル名の文字種を制限する その1

Last updated at Posted at 2025-12-07

はじめに

Web アプリケーションでファイルをアップロードする機能を実装する際、
以下のような制限が求められるケースは非常に多くあります。

  • 特定の拡張子のみ受け付けたい(例:PDF、Excel のみ許可)
  • ファイルサイズに上限を設けたい(例:10MB まで)
  • ファイル名の文字種を制限したい(例:記号禁止、日本語不可)

しかし、OutSystems の Upload ウィジェットは非常にシンプルな構造で、
これらの制御を 標準機能だけではほとんど実現できません

本記事では、
OutSystems 標準でできること/できないこと を明確にしたうえで、
拡張子・ファイルサイズ・ファイル名の文字種を制限する方法を

  • Forge を使う方法
  • 標準だけで実装する方法

の 2 パターンで紹介します。

2. 「標準機能(Reactive)」でできること

2-1. Upload ウィジェットの仕様

  • 同時アップロードは 1 ファイルのみ
  • 拡張子フィルタが可能(AttributesでAcceptを指定)
    例:.pdf, .xlsx と指定すると選択ダイアログで絞り込み可能
    ※ただしブラウザ依存のため「完全な制御」にはならず、後続のチェックは必須
  • ファイルサイズ上限の自動制御なし
    ※サイズは BinaryDataSize(サーバーアクション)で取得できるが
    サーバーアクションのためファイルをアップロードした後でしか確認できない
  • ファイル名の事前制御なし
    ※ファイル名(FileName)はファイル選択後の OnChange(クライアントアクション) で取得可能

2-2. 標準で「できない」こと

  • 拡張子を 完全に 制限すること
    File Types はフィルタであって強制ではないため、選択後に自前チェックが必要)
  • ファイルサイズ上限の自動制御
    BinaryDataSize がサーバーアクションのため、事前チェックは不可)
  • ファイル名の文字種(記号・日本語など)の自動判定
  • 不正ファイル選択をその場でブロックする機能
    OnChange → ロジックで検証 → エラー表示 の流れを自前で実装する必要がある)

このため
Forge の利用 または クライアント/サーバーのバリデーション実装 が必須になります。

📝 補足 Upload の Accept プロパティでできること/できないこと

Upload ウィジェットには Accept プロパティがありますが、指定できるのは以下のような 大まかなカテゴリのみです。

  • Image
  • Video
  • Any

つまり、

.pdf.xlsx のような具体的な拡張子フィルタは設定できません。

■ ファイル選択時のフィルタ(accept 属性)について

ブラウザの ファイル選択ダイアログに拡張子フィルタを適用したい場合は、
Upload ウィジェットの AttributesHTML の accept 属性を手動で追加する必要があります。

例:PDF と Excel のみ選択可能にしたい場合

accept=".pdf,.xlsx"

参考記事:
https://zenn.dev/ak2ie/articles/f8db5d11d29114

■ 仕組み

  • ブラウザが「ファイル選択ダイアログ」の表示内容を絞るだけ
  • アップロードを強制的にブロックするわけではない
    サーバー側(またはクライアントアクション)で必ずチェックが必要

PDFを指定した場合
image.png

拡張子がPDFがデフォルトとなるが、「すべてのファイル」に変更可能
image.png

■ MIME タイプと拡張子の違い

accept には拡張子だけでなく MIME タイプも指定できます。

例:

accept=".pdf,application/pdf"

それぞれには次のような特徴があります。

  • 拡張子

    • 利点:ブラウザが安定して判定できる
    • 欠点:ユーザーがファイル名を書き換えれば偽装できる
  • MIME タイプ

    • 利点:OS・ブラウザが内部的に判定するため、拡張子より偽装されにくい
    • 欠点:ブラウザや環境によって MIME の判定が揺れることがある
      (例:同じ .xlsx でもブラウザによって MIME が異なる場合がある)

■ Upload の Accept プロパティとの違い

機能 指定内容 拡張子の細かい指定
Upload の Accept プロパティ Image / Video / Any ❌ できない
Attributes の accept 属性(HTML) .pdf,.xlsx ⭕ 可能

次の記事に続きます

OutSystems の Upload は便利ですが、そのままでは厳密なチェックはできません。
業務アプリで安全に扱うには、Forge か カスタムバリデーションがほぼ必須になります。

この続きは別記事で詳しく解説します

4
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
4
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?