14

フォームはこちら

form action="index.php" method="POST" enctype="multipart/form-data" >
        <input type="file" name="image[]" multiple="multiple">
        <input type="submit" value="upload">
    </form> 

私は自分のコードをいつでも実行しようとしていますif(!empty($_FILES['image'])){が、何らかの理由で、ファイルを送信せずに送信をクリックしただけで配列が空ではありません。

それが役立つ場合は、コードの残りの部分を次に示します。

<html>

画像のアップロード

    <form action="index.php" method="POST" enctype="multipart/form-data" >
        <input type="file" name="image[]" multiple="multiple">
        <input type="submit" value="upload">
    </form> 

    <?php

    include 'connect.php';

    if(!empty($_FILES['image'])){
    echo $_FILES['image']['error'];
        $allowed = array('jpg', 'gif', 'png', 'jpeg');
        $count = 0;

        foreach($_FILES['image']['name'] as $key => $name){
        $image_name = $name;
        $tmp = explode('.', $image_name);
        $image_extn = strtolower(end($tmp)); //can only reference file
        $image_temp = $_FILES['image']['tmp_name'][$count];
        $filesize = filesize($_FILES['image']['tmp_name'][$count]);
        $count = $count +1;

        if(count($_FILES['image']['tmp_name']) > 5){
            echo "You can upload a maximum of five files.";
            break;
        }

        else if(in_array($image_extn, $allowed) === false){
            echo $name." is not an allowed file type<p></p>";
        }

        else if($filesize > 1024*1024*0.3){
            echo $name." is too big, can be a maximum of 3MB";
        }

        else{

            $image_path = 'images/' . substr(md5($name), 0, 10) . '.' . $image_extn;


            move_uploaded_file($image_temp, $image_path);

            mysql_query("INSERT INTO store VALUES ('', '$image_name', '$image_path')") or die(mysql_error());

            $lastid = mysql_insert_id();
            $image_link = mysql_query("SELECT * FROM store WHERE id = $lastid");
            $image_link = mysql_fetch_assoc($image_link);
            $image_link = $image_link['image'];
            echo "Image uploaded.<p></p> Your image: <p></p><a href = $image_link>$image_path</a>";
            }

        }
        }

    else{
            echo "Please select an image.";
        }

    ?>

4

9 に答える 9

18
于 2012-09-21T22:13:41.907 に答える
8

is_uploaded_file代わりに PHP 関数を使用します。

if(is_uploaded_file($_FILES['image']['tmp_name'])) {
  //code here
}

http://php.net/manual/en/function.is-uploaded-file.php

于 2012-09-21T22:03:30.430 に答える
4

その問題を抱えたのはあなたが初めてではないので、まず最初に PHP のマニュアルを調べてください。解決策はそこに書かれています。

フォームでアップロードするファイルが選択されていない場合、PHP は$_FILES['userfile']['size']0を返し$_FILES['userfile']['tmp_name']、none を返します。

imageしたがって、要素のファイルが送信されているかどうかを実際に知りたい場合は、それを確認してください。

 $noFile = $_FILES['image']['size'][0] === 0 
           && $_FILES['image']['tmp_name'][0] === '';

はい、それは簡単です。

使用したテスト:

empty($_FILE);

フォーム全体が送信されたかどうかのみを通知します。したがって、完全な例:

$submitted = empty($_FILE);
if ($submitted) {
    $noFile    = $_FILES['image']['size'][0] === 0 
                 && $_FILES['image']['tmp_name'][0] === '';
    if ($noFile) {
        ...
    }
}
于 2012-09-21T22:30:35.757 に答える
2

値が null でないことを確認してください:

in_array(!null,$_FILES['field_name']['name'])
于 2015-04-24T12:12:03.357 に答える
2
if($_FILES['image']['error'] === UPLOAD_ERR_OK) {
    // Success code Goes here .. 
}

UPLOAD_ERR_OKエラーがなく、ファイルが正常にアップロードされた場合は、値 0 を返します。

于 2015-12-16T19:37:14.917 に答える
1

http://php.net/manual/en/features.file-upload.post-method.php

フォームでアップロードするファイルが選択されていない場合、PHP は $_FILES['userfile']['size'] を 0 として返し、$_FILES['userfile']['tmp_name'] を none として返します。

ユーザーがアップロードするファイルを選択しなかった場合でも、「ファイル」アップロード フィールドごとに配列エントリを取得します。

于 2012-09-21T22:15:49.747 に答える
1

複数のファイル入力でこの問題に直面しました。ファイルが選択されているかどうかを確認するために機能していることがわかったのは次のとおりです。

<?php
$size_sum = array_sum($_FILES['img']['size']);
if ($size_sum > 0) {
 // at least one file has been uploaded
} else {
 // no file has been uploaded
}
?>
于 2014-10-16T09:35:27.503 に答える
-1
if(isset($_FILES['file'])){//do some thing here}
于 2015-04-21T16:49:53.387 に答える