Ты не поверишь этой вине, я понятия не имею, что происходит. Когда я пытаюсь загрузить файлы, некоторые из них отказываются загружать файлы.
<html>
<body>
<?php
var_dump($_POST);
if ($_POST['fileadd']){
echo "Type: " . $_FILES["file"]["type"] . "<br />";
print_r($_POST); echo "<br>"; print_r($_FILES);
}
?>
<form action="" method="POST"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" class="bigtext" style="width: 80%;">
<br>
<input type="submit" class="bigbutton" id="showloader" name="fileadd" value="Upload the song" />
</form>
</body>
</html>
Здесь он находится в действии. Проблема заключается в том, что он говорит массив 0, который он не должен указывать.
Кроме того, когда я выбираю определенные файлы, массив $_POST
равен nil/zero
, когда в нем должно быть хотя бы fileadd
, как имя кнопки отправки?
После просмотра полного кода и беседы с OP по поиску решения проблемы, поставили проблему следующим образом:
Эта:
if ($_POST['fileadd']){
Необходимо изменить на:
if(isset($_POST['fileadd']))
чтобы проверить, была ли установлена кнопка "Отправить".
Также максимальный размер загрузки был установлен слишком низким в соответствии с размером файлов, которые были загружены, используя следующее в .htaccess
чтобы увеличить его.
php_value upload_max_filesize 48M
php_value post_max_size 48M
Вы просто считаете, что ваш код совершенен. Не это. Он предполагает, что загрузка файлов ВСЕГДА преуспевает и не допускает возможности сбоя. Вам нужно иметь что-то большее:
if ($_FILES['file']['error'] !== UPLOAD_ERR_OK) {
die("File upload failed with error code #" . $_FILES['file']['error']);
}
Коды ошибок определены здесь: http://www.php.net/manual/en/features.file-upload.errors.php
fileadd
существует, почему при загрузке определенных файлов $_POST
становится пустым?
if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... }
. Это на 100% надежно.
.htaccess
не работает, вы можете использоватьini_set('upload_max_filesize','15M'); ini_set('post_max_size','15M');
внутри вашего php-файла, а затем используйтеecho ini_get('upload_max_filesize'), ", " , ini_get('post_max_size');
проверить значения. В качестве альтернативы вы можете использовать эту конфигурацию в вашем файлеphp.ini
в вашем рабочем каталоге.