Перейти к содержимому

Реферальная программа Мегаплана


Скрипт загрузки фалов

#1 Вячеслав

Вячеслав
  • Пользователь
  • 357 сообщений
  • Репутация: 0
0

Отправлено 13 Май 2009 - 00:44

Помогите разобратся...Как в скрипте для загрузки файлов выставить "БЕЗЛИМИТА" или на определенный размер?

Скрипт:

<?php
/*Скрипт загрузки файла*/
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["filename"]["tmp_name"],
"../files/materials/".$_FILES["filename"]["name"]))
{
/*Если файл загружен то создаем переменную и заносим в нее имя файла*/
$filename = $_FILES["filename"]["name"];
/*Создаем переменную с именем каталога для файлов и пристыковываем к ней переменную с именем файла - формируем ссылку*/
$dir = "files/materials/";
$link = $dir.$filename;
} else {
echo("Ошибка загрузки файла");
}
?>

В инструкции к скрипту написано:

Максимальный размер загружаемого файла можно также задать при помощи директивы upload_max_filesize, значение которой по умолчанию равно 2 Мбайт:


if($_FILES["filename"]["size"] > upload_max_filesize)


так как использовать эту директиву? как ее прописать,с каким значением???

 

 

  • 0

#2 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 13 Май 2009 - 12:13

Вячеслав,
Есть подозрение, что сделать можно так

* Без лимита
удалить/закоментировать следующий кусок кода

if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}

* Установить лимит размера
изменяем этот же кусок кода на следующее
$limit = 5; // тут пишем размер ограничения в Мб
if($_FILES["filename"]["size"] > 1024*$limit*1024)
{
echo ("Размер файла превышает $limit Мб");
exit;
}

  • 0

#3 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 13 Май 2009 - 13:26

yury, вы не правы. Максимальный размер закачиваемого файла определяет сервер, а именно PHP-интерпретатор. В файле php.ini есть директива upload_max_filesize
Если сервер не запрещает изменение флагов php.ini с помощью .htaccess, то там это делается так:
php_value upload_max_filesize [новое количество байтов]
А если сервер не запрещает использование функции ini_set(), то тогда ещё легче... Достаточно вначале скрипта написать так:
ini_set(upload_max_filesize,[новое количество байтов]);

  • 0

#4 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 25 Май 2009 - 06:16

Все никак не разберусь, как прописать размер файла например в 100 или 300МБ?

вот так пробовал

ini_set("upload_max_filesize[307200*300*307200]");


Выдает ошибку:

Wrong parameter count for ini_set()

  • 0

#5 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 26 Май 2009 - 14:37

Вячеслав,
300Мб = 314572800 байт. Вот эту цифру и пишите.

Для справки: вы пытались задать размер файла в 307200*300*307200 = 28.311.552.000.000 = более 28 терабайт.
Диски такой емкости пока большая редкость, потому, наверно, и ругается php. :)


  • 0

#6 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 27 Май 2009 - 05:27

Пишу вот так:

<?php
/*Скрипт загрузки файла*/
ini_set(upload_max_filesize,[314572800]);
if(copy($_FILES["filename"]["tmp_name"],
"../files/materials/".$_FILES["filename"]["name"]))
{
/*Если файл загружен то создаем переменную и заносим в нее имя файла*/
$filename = $_FILES["filename"]["name"];
/*Создаем переменную с именем каталога для файлов и пристыковываем к ней переменную с именем файла - формируем ссылку*/
$dir = "files/materials/";
$link = $dir.$filename;
} else {
echo("Ошибка загрузки файла");
}
?>
И все равно выдает ошибку :) ;)
  • 0

#7 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 27 Май 2009 - 11:12

Пишу вот так:

ini_set(upload_max_filesize,[314572800]);

И всеравно выдает ошибку :) ;)

Зачем тут квадратные скобки то??? это же обыкновенный числовой параметр.

Правильно так
* либо в .htaccess:
php_value upload_max_filesize 314572800
* либо в начало скрипта
ini_set(upload_max_filesize, 314572800);

  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Май 2009 - 21:39

Вячеслав, yury правильно говорит, это же обычная функция php у неё 2 параметра.
  • 0

#9 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 28 Май 2009 - 18:46

Всеравно пишет "Ошибка загрузки файла" я и htaccess создал и всеравно тотже результат :)
  • 0

#10 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 28 Май 2009 - 19:08

Проверь этот список:
http://www.php.net/manual/en/ini.php


'upload_max_filesize' и 'post_max_size' являются типом PHP_INI_PERDIR, которые "можно установить в php.ini, .htaccess или httpd.conf". Ты не можешь устанавливать эти параметры в вашем сценарии.

или я имею возможность использовать .htaccess файл?

Ты, возможно, смог бы, если админ сервера не запретил эту особенность.

P.s. это я вычитал на забугорном сайте, поэтому данный параметр ты не можешь менять именно в скрипте!
Возможность изменения доступна только в php.ini, .htaccess или httpd.conf
Но не нужно забывать, что php.ini это файл сервера, к которому имеет доступ только админ. .htaccess и httpd.conf так же не всегда разрешают изменять размер загружаемых файлов, всё опять же определяют настройки сервера
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru