簡體   English   中英

PHP檢查是否有選擇上傳的文件

[英]PHP check if there is a file selected for upload

我有這個表格,我想檢查用戶是否選擇了一個文件。

<form action="upload.php" method="POST" enctype="multipart/form-data" >
    <select name="category">
        <option value="cat1" name="cat1">Productfotografie</option>
        <option value="cat2" name="cat2">Portretten</option>
        <option value="cat3" name="cat3">Achitectuur</option>
    </select>
    <input type="file" name="file_upload">
    <input type="submit" name="submit" value="Upload photo">
</form>

我寫了這個PHP代碼來測試它

if (empty($_POST) === false) {
    $fileupload = $_POST['file_upload'];
    if (empty($fileupload) === true) { //
            echo "Error no file selected";     
    } else {
        print_r($_FILES);
    }
} 

但即使我選擇了某些內容,我也會收到“錯誤未選擇文件”。 任何線索? 對不起,我是PHP的新手。

編輯:我已經嘗試替換$fileupload = $_FILES['file_upload']但它打印出一個空錯誤

(Array([file_upload] => Array([name] => [type] => [tmp_name] => [error] => 4 [size] => 0)))

什么時候我不輸入文件?

使用$_FILES數組和UPLOAD_ERR_NO_FILE常量:

if(!isset($_FILES['file_upload']) || $_FILES['file_upload']['error'] == UPLOAD_ERR_NO_FILE) {
    echo "Error no file selected"; 
} else {
    print_r($_FILES);
}

您還可以檢查UPLOAD_ERR_OK ,它指示文件是否已成功上傳(存在且沒有錯誤)。

注意:你不能在$_FILES['file_upoad']數組上使用empty() ,因為即使沒有上傳文件,仍然會填充數組並設置error元素,這意味着empty()將返回false

首先,單擊提交而不選擇文件

  /* check input 'submit' */        
  if (isset($_POST['submit'])) {
    print($_FILES);
  }

結果:

> Array (
>     [file_upload] => Array
>         (
>             [name] => 
>             [type] => 
>             [tmp_name] => 
>             [error] => 4
>             [size] => 0
>         )
> 
> )

, NOT null or whitespace. ,NOT null或空格數組。
代碼值= 4,表示UPLOAD_ERR_NO_FILE。
如果成功且沒有錯誤,則代碼值= 0。
點擊這里
所以使用函數isset ,而不是

  /* check input submit */
  if (isset($_POST['submit'])) {

    /* check input file_upload on error */
    if (isset($_FILES['file_upload']['error'])) {

      /* check code error = 4 for validate 'no file' */         
      if ($_FILES['file_upload']['error'] == 4) {

        echo "Please select an image file ..";

      }

    }

  }

根據http://www.php.net ,自php 4.1.0以來有$ _FILES可用。 此變量保存有關上載文件的信息。 所以你應該編碼

$fileupload = $_FILES['file_upload'];
if (isset($fileupload)) {
    print_r($_FILES);
} else {
    echo "Error no file selected";     
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM