Загрузка изображения не работает - PullRequest
1 голос
/ 13 июля 2009

Я пытаюсь написать скрипт PHP, который может загружать несколько файлов.

for($i=0;$i<count($_FILES['uploadimg']['name']);$i++){
    $name = $_FILES['uploadimg']['name'][$i];
    $type = $_FILES['uploadimg']['type'][$i];
    $filepath = $_FILES['uploadimg']['tmp_name'][$i];
    $size = getimagesize($filepath);
    $img = file_get_contents($filepath);

    //insert into database
}

Проблема в том, что переменные заполняются не так, как должны.

Когда я загружаю jpeg "image.jpg", я обнаружил, что переменные имеют следующие значения: (заменяя код базы данных на echo s и var_export s)

$name = 'image.jpg'; // good
$type = ''; // not good
$filepath = ''; // not good
$size = false; // not good
$img = false; // not good

Следует отметить, что я понимаю, что $size и $img зависят от $filepath, являющегося допустимым путем к файлу.

Может ли кто-нибудь дать некоторое представление о том, что идет не так или чего мне не хватает? Я целый день играю с кодом и не могу найти решение.

Обновление:

print_r($_FILES) на 3 изображениях возвращает:

Array (
    [uploadimg] => Array (
        [name] => Array (
            [0] => test1.jpg
            [1] => test2.jpg
            [2] => test3.jpg
        )
        [type] => Array (
            [0] => image/jpeg
            [1] =>
            [2] => image/jpeg
        )
        [tmp_name] => Array (
            [0] => /tmp/phpkC6f2F
            [1] =>
            [2] => /tmp/phpgFrPl8
        )
        [error] => Array (
            [0] => 0
            [1] => 1
            [2] => 0
        )
        [size] => Array (
            [0] => 238906
            [1] => 0
            [2] => 237308
        )
    )
)

Можно ли тогда предположить, что это означает, что изображение слишком велико?

Ответы [ 2 ]

2 голосов
/ 13 июля 2009

Этот вопрос / ответ может помочь.

Редактировать - Это похоже на проблему размера файла. Оба работающих файла имеют размеры около 1,8 МБ, и по умолчанию PHP имеет ограничение на загрузку файлов 2 МБ. Я могу дать вам совет только с точки зрения Windows по этому вопросу, но я буду искать в PHP.ini до увеличение upload_max_filesize и, возможно, post_max_size settings.

Редактировать 2 - На PHP.net есть раздел, в котором перечислены коды ошибок для загрузки . Вы получаете 1, который:

UPLOAD_ERR_INI_SIZE

Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.

Это соответствует тому, что я сказал в моем первом редактировании.

1 голос
/ 13 июля 2009

Все ли эти файлы одного типа? Можете ли вы дать нам var_dump переменных при загрузке нескольких файлов? Переменные для всех загрузок пустые или только некоторые?

Например, этот код:

<?php
print_r($_FILES);
?>

<html><body>
<form action="test.php" method="post" enctype="multipart/form-data">
    <input name="upload[]" type="file" /><br />
    <input name="upload[]" type="file" /><br />
    <input name="upload[]" type="file" /><br />
    <input type="submit" value="Upload" />    
</form>
</body></html>

Возвращает этот вывод:

Array (
    [upload] => Array (
        [name] => Array (
            [0] => IMG_0005.jpg
            [1] => IMG_0249.jpg
            [2] => IMG_0007.JPG
        )
        (...snip...)
        [size] => Array ( 
            [0] => 1776529 
            [1] => 1902522 
            [2] => 798008 
        ) 
    ) 
)

Не забудьте проверить $_FILES['name']['error'] для каждого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...