ページで、私は持っています:
_if (!empty($_FILES['logo']['name'])) {
$dossier = 'upload/';
$fichier = basename($_FILES['logo']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['logo']['tmp_name']);
$extensions = array('.png', '.jpg', '.jpeg');
$extension = strrchr($_FILES['logo']['name'], '.');
if(!in_array($extension, $extensions)) {
$erreur = 'ERROR you must upload the right type';
}
if($taille>$taille_maxi) {
$erreur = 'too heavy';
}
if(!empty($erreur)) {
// ...
}
}
_
問題は、ユーザーがロゴをアップロードせずに情報を編集しようとすると、エラーが発生することです:「エラーは正しいタイプをアップロードする必要があります」
したがって、ユーザーがアップロードするために入力ボックスに何も入力しなかった場合、これらの条件のテストに入力したくない
テスト済み:if (!empty($_FILES['logo']['name'])
およびif (isset($_FILES['logo']['name'])
しかし、両方とも機能しないようです。
何か案は?
編集:多分私はそれほど明確ではなかった、私は彼がロゴをアップロードしたかどうかをテストしたくない、彼がアップロードするファイルを選択したかどうかをテストしたいphpは、適切な形式でアップロードする必要があることを示すエラーを発生させます。
ありがとう。
これは次の方法で確認できます。
if (empty($_FILES['logo']['name'])) {
// No file was selected for upload, your (re)action goes here
}
または、アップロードフィールドに空の文字列( "")以外の値がある場合にのみ、アップロード/送信ボタンのみを有効にするjavascript構造を使用して、アップロードのないフォームの送信を回避できます。
ファイル処理 に関するセクションがphpドキュメントにあります。 find さまざまなエラーをチェックでき、そのうちの1つは
UPLOAD_ERR_OK
Value: 0; There is no error, the file uploaded with success.
<...>
UPLOAD_ERR_NO_FILE
Value: 4; No file was uploaded.
あなたの場合、次のようなコードが必要です
if ($_FILES['logo']['error'] == UPLOAD_ERR_OK) { ... }
または
if ($_FILES['logo']['error'] != UPLOAD_ERR_NO_FILE) { ... }
他のさまざまなエラーも同様にチェックする(おそらくユーザーに適切な応答を提供する)ことを検討する必要があります。
is_uploaded_file($ _ FILES ['logo'] ['tmp_name']) を使用して、ファイルが実際にPOSTによってアップロードされたことを確認する必要があります。
if (file_exists($_FILES['logo']['tmp_name']))
をテストし、動作するかどうかを確認します。
または、もっと適切に(Balooに感謝):if (is_uploaded_file($_FILES['logo']['tmp_name']))