PHP - изображение upload.class и $ _FILES - PullRequest
0 голосов
/ 10 апреля 2010

Я использую class.upload.php для загрузки изображений на сервер. Вот моя форма:

<form action="<?="http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];?>" method="post" enctype="multipart/form-data">
  <table style="width: 100%; padding-top: 20px;">
    <tr>
        <td>Image file:</td>
        <td><input type="file" name="image_file" /></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td align="right"><input type="submit" name="add_new" value="Add image" /><td></td>
    </tr>
</table>
</form>

В коде php я делаю:

<code>if( array_key_exists('add_new', $_POST) )
{
    echo 'add new is in array';

    echo '<pre>';
    print_r($_POST);
    print_r($_FILES);
    echo '
'; $ handle = new Upload ($ _ FILES ['image_file']); ... }

Вот вывод print_r:

Array
(
    [image_file] => somefile.png
    [add_new] => Add image
)
Array
(
)

Как видите, второй массив пуст ($ _FILES), поэтому изображение не загружается. Почему?


  • операционная система: Linux
  • Версия PHP: 5.2.12
  • GD версия: 2.0.34
  • поддерживаемые типы изображений: png jpg gif bmp
  • open_basedir: / home / httpd / vhosts /% site% / httpdocs: / tmp

1 Ответ

1 голос
/ 10 апреля 2010

Вы пробовали с изображениями, меньшими, чем настройка ini post_max_size? Также убедитесь, что ваш / tmp имеет место и доступен для записи.

Другие ресурсы:

1) Длинный список причин здесь: http://getluky.net/2004/10/04/apachephp-_files-array-mysteriously-empty/

2) От http://php.net/manual/en/features.file-upload.php

As said before if POST size exceeds server limit then $_POST and $_FILES arrays become empty. You can track this using $_SERVER['CONTENT_LENGTH'].
For example:

<?php
$POST_MAX_SIZE = ini_get('post_max_size');
$mul = substr($POST_MAX_SIZE, -1);
$mul = ($mul == 'M' ? 1048576 : ($mul == 'K' ? 1024 : ($mul == 'G' ? 1073741824 : 1)));
if ($_SERVER['CONTENT_LENGTH'] > $mul*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) $error = true;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...