Webアプリケーションを開発する場合、ファイルアップロードは一般的なニーズの1つです。ただし、このプロセスには、アップロードサイズの制限、一貫性のない形式、または一時的なフォルダーの欠落など、さまざまなエラーが伴う場合があります。ユーザーエクスペリエンスとプログラムの安定性を向上させるために、開発者はこれらのエラーを体系的に処理し、ユーザーに正確なプロンプトを提供する必要があります。
まず、アップロードリクエストを直接拒否するサーバーを避けるために、アップロード関連のパラメーターをPHP.iniで構成する必要があります。
upload_max_filesize = 2M ; アップロードされたファイルの最大サイズ,デフォルトはです2M
post_max_size = 8M ; POSTリクエストによって実行できるデータの合計量,デフォルトはです8M
これらのパラメーターを調整した後、Webサービスを再起動することを忘れないでください。
エラータイプに基づいて明示的なプロンプト情報を返すアップロードエラーを処理するPHPコードの例を次に示します。
<?php
// ファイルのアップロードが成功したかどうかを確認してください
if ($_FILES['file']['error'] !== UPLOAD_ERR_OK) {
// エラー処理をアップロードします
switch ($_FILES['file']['error']) {
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
$errMsg = 'ファイルサイズは制限を超えています!';
break;
case UPLOAD_ERR_PARTIAL:
$errMsg = '部分的なファイルのみがアップロードされます!';
break;
case UPLOAD_ERR_NO_FILE:
$errMsg = 'アップロードされたファイルはありません!';
break;
case UPLOAD_ERR_NO_TMP_DIR:
$errMsg = '一時的なフォルダーは存在しません!';
break;
case UPLOAD_ERR_CANT_WRITE:
$errMsg = 'ファイルの書き込みは失敗しました!';
break;
case UPLOAD_ERR_EXTENSION:
$errMsg = 'ファイルのアップロードは拡張によってブロックされます!';
break;
default:
$errMsg = '不明なエラー!';
break;
}
echo $errMsg;
exit;
}
// ファイルサイズを確認してください
if ($_FILES['file']['size'] > 2 * 1024 * 1024) {
echo 'ファイルサイズは制限を超えています!';
exit;
}
// ファイルの種類を確認してください
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($_FILES['file']['type'], $allowedTypes)) {
echo 'ファイルタイプは許可されていません!';
exit;
}
// ファイルアップロードに正常にアップロードします,後続の操作を実行します
// ...
?>
上記の例では、ファイルをアップロードするとすぐに明確なエラーメッセージが返される場合に例外が発生します。これは、ユーザーエクスペリエンスを改善するために特に重要です。ユーザーの混乱を避けるために、正式なプロジェクトにおけるフロントエンド相互作用のエラープロンプトを国際化するか、統合することをお勧めします。
正式な展開の前に、ファイルがアップロードされているターゲットディレクトリに適切な書き込み許可があることを確認する必要があります。それ以外の場合、コードが論理的であっても、ファイルは保存されない場合があります。
PHPパラメーターを合理的に構成し、特定のエラー処理ロジックを組み合わせることにより、アップロードプロセス中の予期しない状況を効果的に回避できます。ユーザーに明確でフレンドリーなエラー報告情報を提供することは、ユーザーの満足度を向上させるだけでなく、開発者が問題をすぐに見つけるのに役立ちます。