|
|
|
| Народ, помогите пожалуйста разобраться с одной темой.
У меня такая проблемка: мне нужна функция дополнения на сайт файлов через админку, и вывод ее на клиентской странице!
Допустим я добавляю mp3 через админку.
А на клиентской странице отображается весь список.
Как мне можно это сделать? Или какие темы можно почитать? | |
|
|
|
|
|
|
|
для: shmel79
(04.02.2008 в 12:14)
| | Темы "Загрузка файлов" и проблемы связанные с ограничением на размер закачиваемого файла. | |
|
|
|
|
|
|
|
для: shmel79
(04.02.2008 в 12:14)
| | Можно начать отталкиваться от скрипта http://www.softtime.ru/scripts/upload.php. Вы планируете использоваться базу данных? | |
|
|
|
|
|
|
|
для: cheops
(04.02.2008 в 12:25)
| | Да... планирую.
Чтобы выводилось: Заголовок файла и ссылка на его прямое скачивание! | |
|
|
|
|
|
|
|
для: cheops
(04.02.2008 в 12:25)
| | Т.е. мне нужна это функция только для админки.
Посмотрел скрипт... т.е. я понял, что мне нужно создать папку на сервере, куда будут записывсваться файлы, которые я закачиваю. Но паралельно мне еще нужно заносить инфо о файле в БД... чтобы потом выводить ее, как это сделать? | |
|
|
|
|
|
|
|
для: cheops
(04.02.2008 в 12:25)
| | Я пробую сейчас этот скрипт... и вот проблема... у меня не срабатывает загрузка мультимедии...
в форме стоит enctype="multipart/form-data" и загрузке поддаются только txt, jpeg, rar короче все датовые форматы...... проблема явно не из-за веса файла... поставил для закачки 50 метров максимально... Мне нужно закачивать mp3 и видео форматы. Для mp3 он выдает что Файл небыл загружен.... а для видео вообще ошибку денвера! В чем может быть проблема?
if($_FILES["filename"]["size"] > 1024*50*1024)
{
echo ("Размер файла превышает 50 мегабайт");
exit;
}
Правильно? | |
|
|
|
|
|
|
|
для: cheops
(04.02.2008 в 12:25)
| | Походу дела.... все-таки скрипт не закачивает файлы размером больше чем 2 мб...
где можно это справить, может где-то еще указывается подобное значение, например, в форме?..
вот сама форма:
<form action="add_music.php" method="post" enctype="multipart/form-data">
<input size="50" type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form> | |
|
|
|
|
|
|
|
для: shmel79
(04.02.2008 в 14:41)
| | С хостером договаривайтесь. | |
|
|
|
|
|
|
|
для: sim5
(04.02.2008 в 16:26)
| | Да я на локалке пока делаю... может в системных файлах что не так? | |
|
|
|
|
|
|
|
для: shmel79
(04.02.2008 в 17:42)
| | Ну у вас же не "всю жизнь" это на локалке будет, а на хосте сами вы не измените предел в 2 МБ, так что не ищите проблем в формах - хостер, а нет, так резать/клеить файлы. | |
|
|
|
|
автор: _гость_ (04.02.2008 в 17:49) |
|
|
для: sim5
(04.02.2008 в 16:26)
| | можно попробовать положить в эту папку htacces со строкой
php_value upload_max_filesize 50M
|
но ещё есть ограничения | |
|
|
|
|
|
|
|
для: _гость_
(04.02.2008 в 17:49)
| | какие еще есть ограничения? | |
|
|
|
|
|
автор: _гость_ (04.02.2008 в 20:35) |
|
|
для: Trianon
(04.02.2008 в 19:46)
| | Вообще, если честно , 50 метров грузить на сайт через POST както непочеловечески :)
А так после 2M стоят ограничения
post_max_size 8M
memory_limit 8M
max_execution_time 30
и наверное max_input_time 60 :)
это всё врядли будет менять какойнибудь хостер | |
|
|
|
|
|
|
|
для: _гость_
(04.02.2008 в 20:35)
| | А тогда через какую функцию отправлять будет по человечески??? | |
|
|
|
|
|
|
|
для: shmel79
(07.02.2008 в 11:11)
| | загрузку файла по частям надо делать | |
|
|
|
|
|
|
|
для: dimonich2004
(07.02.2008 в 13:14)
| | А при скачивание файл будет собираться в одно целое?? | |
|
|
|
|
|
|
|
для: shmel79
(07.02.2008 в 13:14)
| | Время действия PHP-скрипта на сервере составляет 30 секунд, объемные файлы при медленном соединении часто не успевают загрузиться за это короткое время. Кроме того, контролировать загрузку большого числа мелких файлов проще, чем одного большого. Поэтому часто прибегают к процедуре разбивки файла на отдельные части с последующим их объединением на сервере.
Пусть имеется файл site.гаг, который необходимо разбить на части по 10 000 байт. Скрипт, выполняющий эту задачу, может выглядеть следующим образом
Разбивка файла на части .
<?php
// Имя файла
$filename = "site.rar";
// Разбиваем файл на части по 10 000 байт
$piece = 10000;
// Открываем исходный файл для чтения
$fp = fopen($filename, " r " ) ;
// Читаем содержимое файла в буфер
$bufer = fread($fp, filesize($filename));
// Закрываем файл
fclose($fp);
// Подсчитываем число частей, на которые необходимо разбить файл
$count = (int)filesize($filename)/$piece;
if((float)(filesize($filename)/$piece) - $count ! = 0) $count++;
// В цикле разбиваем содержимое файла в переменной $bufer на части
for($i=0; $i<$count; ++$i)
{
$part = substr($bufer,$i*$piece,$piece);
// Сохраняем текущую часть в отдельном файле
$fp = fopen("Site.tm".$i,"w");
fwrite($fp, $part);
fclose($fp);
}
?>
|
Обратную задачу по сбору файла из отдельных частей выполняет скрипт
Объединение частей файла в единое целое
<?php
$buffer = "";
for($i=0; $i<100000; ++$i)
{
// Генерируем имя файла
$filename = "site.tm".$i;
// Если такой файл существует, добавляем его содержимое к $buffer
if(file_exists($filename))
{
$fp = fopen($filename,"r");
$buffer . = fread($fp,filesize($filename));
fclose($fp);
}
else
{
// Если файл с таким именем не существует, выходим из цикла
break;
}
// Склеенные в переменной $bufer части помещаем в конечный файл
$fp = fopen("site_final.rar","w");
fwrite($fp, $buffer);
fclose($fp);
}
?>
|
| |
|
|
|
|
|
|
|
для: dimonich2004
(07.02.2008 в 13:40)
| | Ок, это все хорошо. Но постала в действительности такая задача, к примеру, у меня. И как реализовать мне эту закачку маленьких разбитых файликов (неизвестно сколько тысяч их там получится) на сервер? В сущности со вторым моментом я думаю что разберусь. | |
|
|
|
|
|
|
|
для: dimonich2004
(07.02.2008 в 13:40)
| | Если, к примеру, в форме указать путь к этому файлу, то скрипт ведь все равно быдет пытаться его загрузить к себе на сервер, или я ошибаюсь??? | |
|
|
|
|
|
|
|
для: dimonich2004
(07.02.2008 в 13:40)
| | dimonich2004, а Вы лично пробовали этот код в реальности, и вобще, на практике занимались этой проблемой, или это вы так, на быструю руку решили "зашвырнуть" код??? | |
|
|
|
|
|
|
|
для: dimonich2004
(07.02.2008 в 13:40)
| | Народ, я не понимаю соответствия уровня актуальности этой темы и активности, с которой вы обращаете на нее внимание - она действительно очень актуальная - загрузка больших файлов на сервер посредством php. | |
|
|
|
|
|
|
|
для: DBFS
(08.02.2008 в 18:21)
| | > Народ, я не понимаю соответствия уровня актуальности этой темы и активности, с которой вы обращаете на нее внимание - она действительно очень актуальная - загрузка больших файлов на сервер посредством php.
Глупости. PHP не загружает Ваш файл с Вашего компьютера. Это Ваш браузер обращается к серверу и передает файл.
По HTTP upload таких файлов не делают. Это делается, например, по FTP.
Так что это Вы видите актуальность данного вопроса. Я - нет. | |
|
|
|
|
|
|
|
для: dimonich2004
(07.02.2008 в 13:40)
| | Ау!!! | |
|
|
|
|
|
|
|
для: DBFS
(08.02.2008 в 19:11)
| | c точки зрения банального интереса что не устраивает Вас сударь?
- У вас файлы будут на сайт ТЕРАБАЙТАМИ закачиваццо?! | |
|
|
|
|
|
|
|
для: dimonich2004
(07.02.2008 в 13:40)
| | Хм.. а не могли бы вы.. по подробнее рассказать как использовать этот скрипт?
В одном файле отдельным от обычного файла-обработчика или в нем использовать.. ? | |
|
|
|
|
|
|
|
для: shmel79
(08.02.2008 в 19:51)
| | как душе угодно
хоть - подряд пиши (скачает и сразу сохранит!) | |
|
|
|
|
|
|
|
для: dimonich2004
(08.02.2008 в 20:32)
| | Хорошо, давайте проявим хоть каплю последовательности! Имеем форму. Да? К примеру вот такую:
<form name="upload_file" enctype="multipart/form-data" action="upload.php" method="post">
<input name="my_file" type="file">
<input name="upload_button" type="submit" value="Отправляем">
</form>
|
Что мы делаем дальше???
>как душе угодно
>хоть - подряд пиши (скачает и сразу сохранит!)
"как душе угодно" - не канает. | |
|
|
|
|
|
|
|
для: shmel79
(04.02.2008 в 12:14)
| | Вот пример кода. У меня mp3 закачивает
<body>
<form action=loadfile.php method=POST enctype=multipart/form-data>
<input type=file name=File><br>
<input type=submit name=doUpload value="loadfile">
</form>
<?
echo "Началась закачка файла, дождитесь окончания!<br>";
$ImgDir="loadfile"; // Каталог для хранения изображений
@mkdir ($ImgDir, 666) ; // Создаем, если его еще нет
// Проверяем, нажата ли кнопка добавления фотографии
if (@$doUpload) {
// Проверяем, принят ли файл
if (@file_exists ($File) ) {
// Все в порядке — добавляем файл в каталог
// Используем то же имя, что и в системе пользователя
Copy ($File, "$ImgDir/".basename ($File_name) ) ;
echo "Все в порядке, файл закачан";
}
}
?>
</body>
|
Да не забудь сделать директорию loadfile | |
|
|
|
|
|
|
|
для: alex123434
(08.02.2008 в 22:57)
| | Нет, вы издеваетесь??? У меня файл базы данных занимает около 7-8 Мб. Мне нужна реализация идеи dimonich2004-а! | |
|
|
|
|
|
|
|
для: DBFS
(09.02.2008 в 00:48)
| | Ты можешь сказать что у тя не получаетя (На данный момент?!) | |
|
|
|
|
|
|
|
для: dimonich2004
(09.02.2008 в 01:01)
| | >Ты можешь сказать что у тя не получаетя (На данный момент?!)
Ага. Смотри: чтобы не заходить на хост в администрат и управление содержимым, а затем в phpMyAdmin а затем копошиться в БД я сделал следущее. Через админку своего сайта я просто заливаю файл с sql-запросом, т.е. sql-файл своей базы данных и дальше скрипт выполняет все sql-запросы согласно файлу, который я загрузил на сервер. Но вот проблемка, БД моих фильмов занимает более 8 Мб. А все что больше 2 Мб не загружается на сервер. Поэтому мне так подошел бы Ваш, dimonich2004, метод. Но вопрос: как мне его реализовать? | |
|
|
|
|
|
|
|
для: dimonich2004
(09.02.2008 в 01:01)
| | Ну то что, напишете код?? | |
|
|
|
|
|
|
|
для: DBFS
(09.02.2008 в 05:44)
| | напиши здесь свой код и попробуем зазобраццо!
ато получается ВЫНЬ ДА ПОЛОЖЬ
-Это как никак форум програмистов а не сестёр мелосердия | |
|
|
|
|
|
|
|
для: dimonich2004
(09.02.2008 в 01:01)
| | Блин, если уже спрашивают, то отвечайте коль знаете. Или скажите что не знаете, да не морочьте голову. Вопросом на вопрос отвечать - много ума не надо! | |
|
|
|
|
|
|
|
для: DBFS
(09.02.2008 в 08:34)
| | напиши здесь свой код и попробуем зазобраццо!
ато получается ВЫНЬ ДА ПОЛОЖЬ
-Это как никак форум програмистов а не сестёр мелосердия | |
|
|
|
|
|
|
|
для: dimonich2004
(09.02.2008 в 15:04)
| | Ну ё-маё. Ну я ж говорю: идет форма для отправки файла -> дальше обработка файла - стандартная. Вот мне надо присоединить ваш метод каким то макаром:
Форма:
<form name="zagr_sql_file" enctype="multipart/form-data" action="<?echo"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}";?>" method="post">
<input name="sql_file" type="file" style="position:absolute;width:141px;left:267px;top:473px;z-index:11">
<input name="upload" type="submit" value="Загрузка" style="position:absolute;left:300px;top:501px;z-index:12">
</form>
|
Обработка:
<?php
if(is_uploaded_file($_FILES['sql_file']['tmp_name'])){
$imgDir="loadfile"; // Каталог для временного хранения sql-файла
@opendir($imgDir);
move_uploaded_file($_FILES['sql_file']['tmp_name'], "$imgDir/sql_file.sql");
echo"<script language='JavaScript'>alert('файл ".$_FILES['sqlfile']['name']." загружен успешно. Приступайте к стадии 2!');</script>";
}
?>
|
Вот! Куда мне влепить вам метод "разбивки файла" для загрузки его на сервер по частям? | |
|
|
|
|
|
|
|
для: DBFS
(09.02.2008 в 16:01)
| | в обработчик!
Ибо верхний код это только форма для загрузки | |
|
|
|
|
|
|
|
для: dimonich2004
(09.02.2008 в 15:04)
| | Все что меньше 2Мб - работает. Только файл занимает столько же как моя база данных, т.е. 8-9 Мб, - все, нифига не работает. В моем распоряжении находится файл php.ini. Может там есть еще что-то такое, чего не обговаривалось в этой теме, и можно поменять??????? | |
|
|
|
|
|
|
|
для: DBFS
(09.02.2008 в 16:26)
| | Хммм... у тебя нету значение value!! в html форме! | |
|
|
|
|
|
|
|
для: shmel79
(09.02.2008 в 16:36)
| | >Хммм... у тебя нету значение value!! в html форме!
Мда, очень ценное замечание. Знаете, если я добавлю value в форму, я думаю, что от этого моя проблема не решится! | |
|
|
|
|
|
|
|
для: DBFS
(09.02.2008 в 16:44)
| | Мда...а вот моя решилась... ! ) Ну вы бы попробывали.
<input type="hidden" name="MAX_FILE_SIZE" value="10000000000" /> | |
|
|
|
|
|
|
|
для: shmel79
(09.02.2008 в 16:50)
| | >Мда...а вот моя решилась... ! ) Ну вы бы попробывали.
>
><input type="hidden" name="MAX_FILE_SIZE" value="10000000000" />
Моя проблема решилась таким макаром: в php.ini отыскал директиву "upload_max_filesize" и увеличил ее значение. Все! Я ее раньше менял, почему то не помогало, тут поставил 9М - и все в норме. Для базы данных хватает ;)
[поправлено модератором] | |
|
|
|
|
|
|
|
для: DBFS
(09.02.2008 в 16:44)
| |
Видите как полезно выкладывать исходник !
| |
|
|
|