Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ссылки на загруженные файлы, на отдельной странице. как?  
:(
    Опции темы
chay
  Дата 31.5.2007, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



Сделал загрузку файлов на сервер по примеру 

http://de3.php.net/manual/ru/features.file-upload.php

Код


<?php
// В PHP 4.1.0 и более ранних версиях следует использовать $HTTP_POST_FILES 
// вместо $_FILES.

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    print "File is valid, and was successfully uploaded. ";
    print "Here's some more debugging info:\n";
    print_r($_FILES);
} else {
    print "Possible file upload attack!  Here's some debugging info:\n";
    print "Possible file upload attack!  Дополнительная отладочная информация:\n";
    print_r($_FILES);
}
print "</pre>";

?>


как сделать, чтобы загруженные файлы на отдельной странице превращались в ссылки? 

Например - 

Загрузил через форму файл test.zip
На странице  files.html появляется ссылка - http://domain.ru/uploads/test.zip

?
PM MAIL   Вверх
teroni
Дата 31.5.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Код

<?php
$uploaddir = '/var/www/uploads/';

if ($handle = opendir($uploaddir))
   {
   while (false !== ($file = readdir($handle)))
      {
      if (!is_dir($file)) echo "<a href=\"http://domain.ru/uploads/$file\">$file</a><br />";
      }
    closedir($handle);
    }
?>

PM MAIL   Вверх
chay
Дата 31.5.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



спасиб, сейчас попробую.
PM MAIL   Вверх
chay
Дата 1.6.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



не работает что-то..
как ссылки на странице сделать? 
PM MAIL   Вверх
Golda
Дата 1.6.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



chay, 

скрипт teroni предполагает, что у вашего сайта DOCUMENT_ROOT - в директории /var/www. В этой же директории находится поддиректория с именем uploads, в которую Вы и копируете файлы (например: скриптом из первого поста). Имя сайта - domain.ru. Приведите все данные в соответствии со своей реальной ситуацией:

имя домена,
путь к директории uploads в файловой системе,
путь к директории uploads в URL

и все у Вас получится. А если не получится, дайте более развернутую информацию о том, что происходит: выдаются ошибки при работе скрипта, 404-ошибка при нажатии на ссылку? Что происходит-то?

Это сообщение отредактировал(а) Golda - 1.6.2007, 10:41


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
chay
Дата 1.6.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



Golda,
все заработало, видимо где-то был просто невнимателен.. сори)
Код

while (false !== ($file = readdir($handle)))

интересный момент, не совсем понятно как он работает..
Переменная $file равна значению функции readdir для переменной $handle и не идентично лжи.
Так? 
Код

if (!is_dir($file)) echo "<a href=\"http://domain.ru/uploads/$file\">$file</a><br />";  

если переменная $file не является директорией выполняет echo. 
Так? 


Это сообщение отредактировал(а) chay - 1.6.2007, 16:55
PM MAIL   Вверх
Golda
Дата 1.6.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



1) Да, так. оператор = возвращает значение, равное присвоеному. Поэтому его можно использовать в выражениях. readfile() возвращает имя следующего элемента директории (файла (возможно ссылки) или дирректории), пока находит. Когда вся дирректория будет перебрана, readfile() вернет false и Вы выйдете из цикла.

2) Из дирректории uploads нужно выдавать ссылки только на файлы. Даже если Вы специально не создавали там директорий, там есть, как минимум, 2 дирректории заглушки: '.' (ссылка на текущую директорию) и '..' (ссылка на родительскую директорию). Поэтому проверка нужна. Правда, вообще говоря, лучше делать проверку с абсолютным путем, а не относительным.

Код

is_dir($uploaddir . '/' . $file)



--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.