Visualforceページでファイルアップロードを実行できる『apex:inputFile』タグとファイルサイズの判定についてです。『apex:inputFile』タグにはfilesize属性が用意されているので、これでApexクラス側に変数を用意して値を保持することが可能となっています。
<apex:inputFile value="{!uploadFile}" filename="{!fileName}" filesize="{!fileSize}" title="ファイル添付" size="80" />
Apexクラス側での値判定は次のようになります。
public Boolean checkIsFileSizeError(Long fileSize) { if(fileSize != null && fileSize > 1242880){ Decimal fileSizeView = this.converFileSizeMegaByte(fileSize); String errorMsg = 'ファイルサイズの上限を超えています。1MB以内のファイルにしてください。 : [アップロードサイズ = 約' + fileSizeView + 'MB)]'; ApexPages.addMessage(new ApexPages.Message(ApexPages.severity.Error, errorMsg)); return true; } return false; }
ファイルサイズをMBに変換するのはこんな感じみたいです。
public Decimal converFileSizeMegaByte(Long fileSize) { Decimal result = 0; if (fileSize != null) { result = Decimal.valueOf(fileSize / 1048576).setScale(1); } return result; }
という感じの方法がDiscussionFormで紹介されていました。
Client side file size validation for <apex:inputFile ............ - Salesforce Developer Community
上記方法で指定サイズ以上のファイルサイズの場合、エラーにして処理終了というような使い方ができます。