Проверка размера файла json

#php

#php

Вопрос:

У меня есть несколько примеров в Google, но, похоже, ни один из них не работает, что я пытаюсь сделать:

 if(isset($_POST)) {
    // json parse   
    $json = file_get_contents('php://input');
    // save the json files for later
    // make sure they contain data
    if(filesize($json) < 16 amp;amp; empty(trim(file_get_contents($json))) )
    {
        $file = 'links-'.rand(10000000,99999999).".txt";
        file_put_contents('Links/' . trim($file), $json);       
    }
}
?>
  

Если размер файла пуст, не создавайте файл, но приведенный выше код все еще работает (это последний код, который я пробовал), я упускаю что-то очевидное здесь?

Комментарии:

1. file_get_contents('php://input') это не файл, это тело post (в вашем случае сам json)

2. Как упоминал @chumkiu, $file — это строковая переменная, которая хранит фактический json. Итак, вы можете использовать Object.keys($json). длина, позволяющая определить, является ли json пустым или в нем есть содержимое. Надеюсь, это поможет.

Ответ №1:

Функция file_get_contents() считывает содержимое в строку. Как только он окажется в памяти, вам не нужно пытаться прочитать его снова.

 if (isset($_POST)) {
    // populate the json variable   
    $json = file_get_contents('php://input');
    // if the variable is not empty
    // save the content for later
    if (!empty($json))
    {
        $file = 'links-'.rand(10000000,99999999).".txt";
        file_put_contents('Links/' . trim($file), $json);       
    }
}
?>
  

Ответ №2:

очень простым решением является декодирование json, и теперь вы можете проверить, является ли декодированный json пустым массивом.

 $json = file_get_contents('php://input');
$json = json_decode($json);// decode json`
if (empty($json)) {
   // json is empty
}