1

こんにちは、何らかの理由で、ファイルが空であるかどうかをプログラムで確認できません。何かが選択されている場合は、実行されるべきではありませんが、実行されます。これがコードです

if (empty($_FILES['file'] ) )
    {
        echo "testing";
        $seterror =1;
        returnBack();

    } 
4

6 に答える 6

2

コメントで指定したvar_dump($ _ FILES)から、$ _ FILE ['file']が空ではないため、「テスト」をエコーし​​ていないように見えます(つまり、機能していません)。

あなたが私に提供したものから:

$ _FILES ['file'] = array(5){["name"] => string(0) "" ["type"] => string(0) "" ["tmp_name"] => string(0) "" ["error"] => int(4)["size"] => int(0)}

empty()が配列をどのように処理するかは完全にはわかりませんが(ドキュメントには、空の配列に対してtrueが返されると記載されています)、少なくとも$ _FILES['file']['を削除する必要があります。エラー'](int(4)であるため空ではありません)、またはempty()を使用して$ _FILES ['file']['name']のようなものをチェックします

したがって、私の提案を使用すると、コードは次のようになります。

if (empty($_FILES['file']['name'])) {
    echo "testing";
    $seterror = 1;
    returnBack();    
}

または(PHP配列の理解に問題がある可能性があるため)、これを試してください。

if(empty($_FILES['file']['name'])) {
    echo "testing";
    $seterror = 1;
    returnBack();
}
于 2012-09-05T00:15:18.733 に答える
2

ファイル配列を出力すると何が得られますか?(すなわちprint_r($_FILES);

あなたのコードは、呼び出されたファイルの内容fileが空であるかどうかを教えてくれません。の値$_FILES['file']が空であるかどうかを教えてくれます。これはあなたが望むものではないかもしれません。また、のロジックが必要ないempty場合もあります-違いがあるかどうかを確認するためにこれを試しましたか?

if (array_key_exists('file', $_FILES)) {
    ...
}
于 2012-09-04T23:55:49.433 に答える
1

これを試すことができると思います

if(empty($_FILES['file']['name']))
{
    // not uploaded
}
else
{
    // uploded
}
于 2012-09-05T00:15:16.020 に答える
1

空のファイルをテストしている場合は、ここにコードがあります

$file = 'test.txt';

if(filesize($file) == NULL) {
    echo "empty"; 
}
于 2012-09-05T00:01:13.740 に答える
1

PHPの言語構造empty()と配列はうまく混ざり合っていません。さらに、<input type='file' name='file' />フォームにが含まれている場合は、配列取得します。$_FILES[]あなたは最初からやるべきですif( !array_key_exists('file', $_FILES) ) { // no file uploaded }

実際、いくつかのチェックを行う必要があります。

  • file要素が入力されている場合$_FILES
  • エラーがない場合(つまり、$_FILES['file']['error']== 0)
  • アップロードされたファイルの一時的な場所のファイル名がある場合
  • PHPがアップロードされたファイルであると信じている場合、および/またはそれを移動できる場合

これらすべてに当てはまるのは、処理するファイルがあります。そうでなければ、あなたはしません。

私は、ファイルアップロードハンドラーでこれらの手順を忠実に実行することで、完全に信頼できることがわかりました。

于 2012-09-05T00:23:34.730 に答える
0

さて、私がしなければならなかったのは、エラーが発生していないかどうかを確認することでした。エラーが発生した場合は、空であることを意味するため、通過しませんでした。

コード:

if (!empty($_FILES['file']['error'] ) )
    {

        echo "file";
        $seterror =1;
        returnBack();

    } 

助けてくれてありがとう!

于 2012-09-05T00:35:08.630 に答える