большая проблема с загрузкой файлов с php - PullRequest
0 голосов
/ 15 апреля 2010

Мне нужно загрузить CSV-файл на сервер. отлично работает для небольших файлов, но если размер файла 3-6 мегабайт, он не работает.

$allowedExtensions = array("csv");
         foreach ($_FILES as $file) { 
            if ($file['tmp_name'] > '') { 
             if (!in_array(end(explode(".", strtolower($file['name']))), $allowedExtensions)) { 

              die($file['name'].' is an invalid file type!<br/>'. '<a href="javascript:history.go(-1);">'. '&lt;&lt Go Back</a>'); 

             }
             if (move_uploaded_file($file['tmp_name'], $uploadfile)) {
                    echo "File is valid, and was successfully uploaded.\n";
                } else {
                    echo "Possible file upload attack!\n";
              }

             echo "File has been uploaded";



            } 

// загрузить форму

 <form name="upload" enctype="multipart/form-data" action="<? echo $_SERVER['php_self'];?>?action=upload_process" method="POST">
                    <!-- MAX_FILE_SIZE must precede the file input field -->
                    <input type="hidden" name="MAX_FILE_SIZE" value="31457280" />
                    <!-- Name of input element determines name in $_FILES array -->
                    Send this file: <input name="userfile" type="file" />
                    <input type="submit" value="Send File" />
            </form>

Я также добавил это в htaccess

php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

Где я иду не так?

Ответы [ 4 ]

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

Какое значение $ _FILES ['userfile'] ['error']? Посмотрите здесь:

http://php.net/manual/en/features.file-upload.errors.php

Кроме того, что с этим:

if ($file['tmp_name'] > '') { 

Не думаю, что это очень здорово.

0 голосов
/ 15 апреля 2010

Проверьте ваши журналы ошибок apache и там должна быть ошибка?

0 голосов
/ 15 апреля 2010

Просто несколько советов к вашему коду

  • ($file['tmp_name'] > '') должно быть что-то вроде ( ! empty($file['tmp_name']))
  • повторение "возможной атаки при загрузке файлов" никому не поможет. Если вы считаете, что это возможная атака, зарегистрируйте ее в файле.
  • Атрибут действия формы, $_SERVER['php_self'], должен быть написан заглавными буквами, поскольку он является константой, т.е. $_SERVER['PHP_SELF'].
0 голосов
/ 15 апреля 2010

Проверьте ваш файл php.ini и посмотрите, установлен ли там upload_max_filesize больше 3 МБ, я не знаю, имеет ли .htaccess приоритет над php.ini.

Ограничение загрузки по умолчанию наDebian php5 равен 2 МБ, если я правильно помню, но я не уверен, на какой системе вы работаете.

Вы также можете проверить значения php, если создадите файл , например, info.php и поместите его в ту же директорию, что и ваш "скрипт php проблемы".

Содержимое файла должно выглядеть следующим образом <?php phpinfo(); ?>

Это даст вам всеСоответствующие значения php ссылаются на каталог, в котором вы находитесь , надеюсь, это поможет.

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