##起こったこと
- 画面からファイルをアップロードすると**「要求の長さの最大値を超えました。」**と表示された。
##原因
- デフォルトで4MBまでという制限が掛っているため。
##対策
- Web.config の httpRuntime プロパティに最大値を設定すればOK。
例として10MBを指定する場合
Web.config
<configuration>
<system.web>
<httpRuntime maxrequestlength="10240">
</system.web>
</configuration>
- プロパティの最大値を超えるファイルを添付した場合はエラーが出るので、Javascriptで制御する。
HTML
<input type="file" id="example" multiple>
JavaScript
var mb = 10 // 制限サイズ(MB)
var message = `ファイルサイズは${mb}MB以下にしてください。`;
const sizeLimit = 1024 * 1024 * mb; // 制限サイズ
const fileInput = document.getElementById('example'); // input要素
// changeイベントで呼び出す関数
const handleFileSelect = () => {
const files = fileInput.files;
for (let i = 0; i < files.length; i++) {
if (files[i].size > sizeLimit) {
// ファイルサイズが制限以上
alert(message); // エラーメッセージを表示
fileInput.value = ''; // inputの中身をリセット
return; // この時点で処理を終了する
}
}
}
// フィールドの値が変更された時(≒ファイル選択時)に、handleFileSelectを発火
fileInput.addEventListener('change', handleFileSelect);
##参考
https://dotnet.programmer-reference.com/aspnet-maxrequestlength/