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



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

#1

Поделиться сообщением #1



Вячеслав

Вячеслав
  • Пользователь
  • 375 сообщений
  • Репутация: 2
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

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Кликандер скрипт
  2. Скрипт загрузки изображений
  3. Скрипт загрузки файлов на сервер
  4. Скрипт загрузки изображений
  5. Перемещение загрузки скриптов из хедера в футер

#2

Поделиться сообщением #2



yury

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

Отправлено 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

Поделиться сообщением #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

Поделиться сообщением #4



Вячеслав

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

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

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

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

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


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

Wrong parameter count for ini_set()

  • 0

#5

Поделиться сообщением #5



yury

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

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

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

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


  • 0

#6

Поделиться сообщением #6



Вячеслав

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

Отправлено 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

Поделиться сообщением #7



yury

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

Отправлено 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

Поделиться сообщением #8



ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

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

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

#9

Поделиться сообщением #9



Вячеслав

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

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

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

#10

Поделиться сообщением #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