Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Upload - описание файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Include
Отправлено: 07 Февраля, 2007 - 07:46:16
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Февр. 2007  
Откуда: СПб


Помог: 0 раз(а)




Привет! Помогите, пожалуйста разобраться. Загружать файлы в заданную директорию получается. А вот описание - вообще не получается. Вот часть скрипта, которая выводит список файлов (пока без описаний):

PHP:
скопировать код в буфер обмена
  1.  
  2. $handle=opendir($upload_dir);
  3. $filelist = "";
  4. while ($file = readdir($handle)) {
  5.    if(!is_dir($file) && !is_link($file)) {
  6.       $filelist .= "<a href='$upload_dir$file'>".$file."</a>";
  7.       $filelist .= " ".date("d-m H:i", filemtime($upload_dir.$file));
  8.           $filelist .="<br>";
  9.       $filelist .=" ". ($description);
  10.       $filelist .="<br>";
  11.  
  12.      }
  13. }
  14.  


Нужно сделать, чтобы файлы были с описаниями ($description). Описание записывается в файл с таким же именем, что и загружаемый файл, но с расширением .txt. Как это проще сделать?

Долго пробовал, но знаний не хватает. Помогите советом или ссылкой на конкретную документацию. Заранее спасибо!
 
 Top
f0rm4t
Отправлено: 09 Февраля, 2007 - 06:17:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 433
Дата рег-ции: Июнь 2006  


Помог: -1 раз(а)




Хм... а в чем собственно загвоздка?
По моему все довольно просто: получаешь переменную от пользователя, очищаешь от ненужного, вычисляешь имя файла (без расширения), открываешь файл `имя_файла_без_тасширения.txt` на запись, записываешь в него нужную информацию, закрываешь файл.
Вот собственно все =)
 
 Top
Include
Отправлено: 09 Февраля, 2007 - 12:37:40
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Февр. 2007  
Откуда: СПб


Помог: 0 раз(а)




Да, такой вариант мне советовали Улыбка А вот такой вариант я придумал:

Подставляется произвольное имя для файла

CODE (text):
скопировать код в буфер обмена
  1.  
  2.      // Подставляем произвольное имя для файла
  3.      $filename = $_FILES['file']['name'];
  4.      $random_digit=rand(0000,9999);
  5.      $new_file_name=$random_digit.$file_name;
  6.      move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir.'/'.$new_file_name);
  7.  


.......

Дальше, $html - это вставленные данные о файле и описание в готовый шаблон странички сайта.

CODE (text):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. ...
  4. <body>
  5. $html
  6. </body>
  7. </html>
  8.  


Далее, готовый шаблон вставляем в новый фал с таким же именем:

CODE (text):
скопировать код в буфер обмена
  1.  
  2.     $f = fopen($upload_dir.'/'.$new_file_name.', "w");
  3.     fwrite($f, $html);
  4.     fclose($f);
  5.     $msg = "Файл {$new_file_name} загружен,
  6.     <a href='{$web_upload_dir}/{$new_file_name}.html'>страница с файлом</a>";
  7.  


Записываем в отдельный файл информацию о загруженном файле (в принципе то же самое, что и в $html, но без шаблона, просто .txt файл:

CODE (text):
скопировать код в буфер обмена
  1.  
  2.     $f = fopen($upload_dir."/require.txt", "a");
  3.     fwrite($f, "<p>{$date}</p>n
  4.                    <p>{$size}</p>n
  5.                    <p>{$description}</p>nn");
  6.     fclose($f);
  7.  


А сам require.txt с помощью require подставляем на страницу со списком файлов.

Как такой вариант? Только вот не знаю, как лучше генерировать случайные имена для новых фалов? "rand" допускает вероятность повторения или лучше что-то другое попробовать?
 
 Top
valenok Модератор
Отправлено: 09 Февраля, 2007 - 13:34:21
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Попробуйте то что вам посоветовали.\n\n(Добавление)
А в именах используйте метку времени. Таким образом вы исключите возможность дублирования названия.


-----
Truly yours, Sasha.
 
My status
 Top
Include
Отправлено: 09 Февраля, 2007 - 13:54:13
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Февр. 2007  
Откуда: СПб


Помог: 0 раз(а)




valenok пишет:
А в именах используйте метку времени. Таким образом вы исключите возможность дублирования названия.


Спасибо за совет!!

А вообще, чем мой вариант хуже? Просто мне нужно еще отдельную страничку для каждого файла, где бы можно было комментировать его всем желающим... Или я что-то путаю?
 
 Top
valenok Модератор
Отправлено: 09 Февраля, 2007 - 14:44:17
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




> А вообще, чем мой вариант хуже?
Если вы так утверждаете, сами нам и расскажите. Я такого не говрил.

> Или я что-то путаю?
Раз спрашиваете скорее всего чтото вас явно путает.

> Просто мне нужно еще отдельную страничку
Вы уверены что нужно? Давайте разбираться.

Что вы хотите получить?
Нечто вроде галереи чтоли?
Тогда давайте определимся как она будет работать (редактируйте):

А. Пользователь загружает файл.
Б. Вместе с файлом и описание файла загружает наш пользователь.
С. Приходят люди, заходят на страничку пользователя и видят все его фото с возможностью оставлять комментарии.

Теперь где и как будут храниться фотографии, коментарии, какая защита от дубляжа названий и т.д.


-----
Truly yours, Sasha.
 
My status
 Top
Include
Отправлено: 09 Февраля, 2007 - 16:03:22
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Февр. 2007  
Откуда: СПб


Помог: 0 раз(а)




Цитата:
Если вы так утверждаете, сами нам и расскажите. Я такого не говрил.


Просто я новичок в PHP, поэтому и обращаюсь за советом, может что-то лучше можно сделать...

Цитата:
> Просто мне нужно еще отдельную страничку
Вы уверены что нужно? Давайте разбираться.

Что вы хотите получить?
Нечто вроде галереи чтоли?
Тогда давайте определимся как она будет работать (редактируйте):

А. Пользователь загружает файл.
Б. Вместе с файлом и описание файла загружает наш пользователь.
С. Приходят люди, заходят на страничку пользователя и видят все его фото с возможностью оставлять комментарии.


Я хочу создать нечто вроде музыкального автомата, где лежат неизвестные песни в mp3 для опознания. Чтобы пользователь мог загрузить неизвестную песню, а остальные ему помогли бы ее узнать.

По пунктам:

1. Пользователь загружает файл с сопроводительными данными (свое имя, е-mail, сопроводительный комментарий к выкладываемой композиции).

2. Люди заходят на главную страничку и видят список загруженных фалов. При желании скачивают.

3. Если хотят прокомментировать песню - переходят по ссылке (Комментарии (чисо комментариев)) на страничку этого файла (имя странички такое же, что и у файла).

Цитата:
Теперь где и как будут храниться фотографии, коментарии, какая защита от дубляжа названий и т.д.


Из скрипта следует, что муз. файлы будут храниться в upload_dir, комментарии там же, только в отдельном .txt файле. В той же upload_dir будут полноценные html странички с именами как у фалов. Защита от дубляжа с помощью "$date".

Вот такая идея. Может быть можно что-то сделать более рационально?
 
 Top
valenok Модератор
Отправлено: 09 Февраля, 2007 - 18:08:30
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Тоесть на каждый файл будет приходится по файлу, текст документу и html странице?

А php вы зачем учите?
Чисто для загрузки файлов?
Есть такая штука - БазаДанных.
Стоит освоить с ней работу.


-----
Truly yours, Sasha.
 
My status
 Top
Include
Отправлено: 09 Февраля, 2007 - 18:23:06
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Февр. 2007  
Откуда: СПб


Помог: 0 раз(а)




На каждый файл приходится: сам файл, 1 html документ и 1 общий .txt файл.

MySQL еще не понятно, я только недавно стал PHP изучать.
 
 Top
valenok Модератор
Отправлено: 09 Февраля, 2007 - 18:55:48
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Увеличить эффективность в несколько раз поможет правильная работа с БД.
Вам стоит освоить её.
А для практики делайте как вы и придумали.


-----
Truly yours, Sasha.
 
My status
 Top
Include
Отправлено: 10 Февраля, 2007 - 01:08:42
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Февр. 2007  
Откуда: СПб


Помог: 0 раз(а)




У меня еще возник маленький вопрос:

как взять имя файла, я пробовал и substr и baseline?

Цитата:
substr($new_file_name, strrpos($new_file_name, '.'));
$f = fopen($upload_dir.'/'.$new_file_name.'.html', "w");
fwrite($f, $html);
fclose($f);


чтобы файл html назвался не 01.mp3.html, а 01.html? что-то не получается... подскажите, плиз!
 
 Top
valenok Модератор
Отправлено: 10 Февраля, 2007 - 08:02:55
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $filename= "Maria_Ivanovna.mp3";
  3. $html_file = substr($filename,0,strrchr($filename))."html";
  4.  


-----
Truly yours, Sasha.
 
My status
 Top
Include
Отправлено: 10 Февраля, 2007 - 16:13:27
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Февр. 2007  
Откуда: СПб


Помог: 0 раз(а)




Спасибо!\n\n(Добавление)
А если вместо Maria_Ivanovna.mp3 у меня переменная $new_file_name, как быть?
 
 Top
valenok Модератор
Отправлено: 10 Февраля, 2007 - 17:24:44
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Издеваетесь?

$html_file = substr($new_file_name,0,strrchr($new_file_name))."html";




-----
Truly yours, Sasha.
 
My status
 Top
Include
Отправлено: 10 Февраля, 2007 - 18:19:40
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Февр. 2007  
Откуда: СПб


Помог: 0 раз(а)




И не думал издеваться. Я также написал как у вас сейчас - и ничего не сработало.

CODE (text):
скопировать код в буфер обмена
  1.  
  2.          $html_file = substr($new_file_name,0,strrchr($new_file_name))."html";
  3.          $f = fopen($upload_dir.'/'.$html_file, "w");
  4.          fwrite($f, $html);
  5.          fclose($f);
  6.  


и у меня создается просто файл с именем html, без расширения...
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB