というファイル フィールドを持つフォームがありますimage
が、このフィールドは必須ではありません。
ユーザーがフォームでファイルを選択しない場合、 はdo_upload()
常にエラーを返します。
コントローラーでアップロード アクションを実行する前に、ユーザーがファイルを選択したかどうかを確認するにはどうすればよいですか?
9 に答える
empty()を使用してください
if (empty($_FILES['userfile']['name'])) {
}
を使用して、ファイルが有効かどうかを確認してくださいis_uploaded_file()
。例えば:
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
do_upload();
}
コントローラーで、送信されたフォームを受け取る関数で:
if (isset($_FILES['image']['name']) && !empty($_FILES['image']['name'])) {
// do_upload
}
ファイルのアップロードを確認するには、ネイティブの php コードを使用するだけです。
if(!file_exists($_FILES['myfile']['tmp_name']) || !is_uploaded_file($_FILES['myfile']['tmp_name'])) {
echo 'No upload';
}
PHPでファイルフィールドが空かどうかを確認する完全なスクリプトは次のとおりです
<!DOCTYPE html>
<html>
<body>
<form action="#" method="post" enctype="multipart/form-data">
Select image to upload:
<input name="my_files[]" type="file" multiple="multiple" />
<input type="submit" value="Upload Image" name="submit">
</form>
<?php
if (isset($_FILES['my_files']))
{
$myFile = $_FILES['my_files'];
$fileCount = count($myFile["name"]);
for ($i = 0; $i <$fileCount; $i++)
{
$error = $myFile["error"][$i];
if ($error == '4') // error 4 is for "no file selected"
{
echo "no file selected";
}
else
{
$name = $myFile["name"][$i];
echo $name;
echo "<br>";
$temporary_file = $myFile["tmp_name"][$i];
echo $temporary_file;
echo "<br>";
$type = $myFile["type"][$i];
echo $type;
echo "<br>";
$size = $myFile["size"][$i];
echo $size;
echo "<br>";
$target_path = "uploads/$name"; //first make a folder named "uploads" where you will upload files
if(move_uploaded_file($temporary_file,$target_path))
{
echo " uploaded";
echo "<br>";
echo "<br>";
}
else
{
echo "no upload ";
}
}
}
}
?>
</body>
</html>
しかし、注意してください。ユーザーはあらゆる種類のファイルをアップロードでき、悪意のあるファイルや php ファイルをアップロードしてサーバーやシステムをハッキングすることもできます。このスクリプトでは、いくつかの検証が必要です。
http://www.techzigzag.com/how-to-check-that-user-has-upload-any-file-or-not-in-php/を参照してください
それがあなたを助けることを願っています。
ファイルアップロードエラー「ファイルが選択されていません」は4番なので、これを行う正しい方法は次のとおりです。
if ($_FILES['my_image_field_name']['error'] !== 4){
if ($this->upload->do_upload('my_image_field_name')) { ...
名前または tmp_name で確認する場合、これらのフィールドに入力されなかった理由が他にある可能性があり、これらを見逃す可能性があります。
empty() empty 関数を使用すると、ファイル フィールドが空かどうかがチェックされます
if ( ! empty($_FILES)) {...}
if(!empty($_FILES['myFileField'])) {
// file field is not empty..
} else {
// no file uploaded..
}