Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод названия файла в виде гиперссылки
 
 автор: fsol   (11.08.2011 в 20:21)   письмо автору
 
 

Здравствуйте. Такая проблема.
Нужно что бы выводимое название файла (название хранится в базе) в виде гиперссылки, при нажатии на который открывался сам файл. Т.е файл закачивается на сервер ,через форму ввода. Далее название файла выводится .

while ($m=mysql_fetch_array($r))
{
echo " <tr>
<td> <a href= >".$m['user_file']." </a>


т.е имя файла выводися в виде гиперссылки. Не понятно что писать тут <a href= > , т.е надо указать путь к фалу. Если в теге <a> указать $_FILES["filename"]["tmp_name"] , но если я пишу
<a href=<?php echo"($_FILES["filename"]["tmp_name"])";?> > то при нажатии на ссылку выводится не сам файл , а страница которой нет, т.к не срабатывает сам код php не смотря на
<?php ?> .

  Ответить  
 
 автор: Valick   (11.08.2011 в 20:26)   письмо автору
 
   для: fsol   (11.08.2011 в 20:21)
 

помимо имени файла в базе обычно хранят абсолютный или относительный путь к файлу
да и с именем не все так просто :)

  Ответить  
 
 автор: Гавриленко Дмитрий   (11.08.2011 в 20:35)   письмо автору
 
   для: fsol   (11.08.2011 в 20:21)
 

Ну стоит сохранить файл $_FILES["filename"]["tmp_name"] в директория какую нибудь и по-мимо названия записать еще и путь. Ну валик об этом и писал.

  Ответить  
 
 автор: cheops   (11.08.2011 в 20:42)   письмо автору
 
   для: fsol   (11.08.2011 в 20:21)
 

А при загрузки файла на сервер вы куда их помещает? Или так и оставляете во временной директории? Из временной директории файлы регулярно удаляются и обратиться напрямую к ней не получится. Если хотите, чтобы файл жил на сервере долго, его нужно переместить в одну из директорий виртуального хоста либо при помощи функции move_uploaded_file(), либо при помощи copy(). А в гиперссылке указывать путь до этой директории-хранилища.

  Ответить  
 
 автор: fsol   (12.08.2011 в 00:09)   письмо автору
 
   для: cheops   (11.08.2011 в 20:42)
 

я пишу так:

if (copy($HTTP_POST_FILES["filename"]["tmp_name"],

"C:\temp\".$HTTP_POST_FILES["filename"]["name"]))

{
echo("Файл загружен");
}

else

{
echo("Ошибка загрузки");
}
?>

  Ответить  
 
 автор: Valick   (12.08.2011 в 00:14)   письмо автору
 
   для: fsol   (12.08.2011 в 00:09)
 

вопросы подобные вашему часто возникают на форуме, сегодня промелькнула идея написать что-то типа статьи на данную тему именно не просто загрузки файла на сервер (такого на форуме навалом)
а загрузки-хранения-обработки файлов на сервере

  Ответить  
 
 автор: fsol   (12.08.2011 в 00:17)   письмо автору
 
   для: Valick   (12.08.2011 в 00:14)
 

это хорошо. Мне то как файл открыть ?

  Ответить  
 
 автор: cheops   (12.08.2011 в 00:18)   письмо автору
 
   для: fsol   (12.08.2011 в 00:09)
 

В базу данных кладете имя $_FILES["filename"]["name"]? Тогда ссылайтесь так
while ($m=mysql_fetch_array($r))
 {
 echo " <tr>
 <td> <a href='C:/temp/".$m['user_file']."' >".$m['user_file']." </a>

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

  Ответить  
 
 автор: fsol   (12.08.2011 в 21:21)   письмо автору
 
   для: cheops   (12.08.2011 в 00:18)
 

Сделал так.При нажатии на файл браузер выводит:
Предупреждение. Firefox не может определить,как открыть данный адрес, т.к протокол (c) не связан ни с одним приложением.

  Ответить  
 
 автор: cheops   (12.08.2011 в 21:31)   письмо автору
 
   для: fsol   (12.08.2011 в 21:21)
 

Да, лучше их не C:/temp копировать, а в подпапку вашего виртуального хоста.

  Ответить  
 
 автор: fsol   (15.08.2011 в 18:29)   письмо автору
 
   для: cheops   (12.08.2011 в 21:31)
 

создал папку localhost (C:/WebServers/home/localhost/www/.....

не отткрывается.

  Ответить  
 
 автор: cheops   (15.08.2011 в 19:06)   письмо автору
 
   для: fsol   (15.08.2011 в 18:29)
 

1) Сам скрипт где лежит относительно папки?
2) После загрузки файла - он появляется в директории назначения?
3) Если прописать к изображению адрес прямо в строке браузера - изображение отображается?

  Ответить  
 
 автор: fsol   (15.08.2011 в 19:16)   письмо автору
 
   для: cheops   (15.08.2011 в 19:06)
 

1)скрипт и папка куда записываются файлы лежит в папке site (С:/WebServers/..../www/Site)
2) Да . после загрузки файл появляется в той папке которая записана в скрипте
3) Не знаю , не делал.
я загружаю на сервер файлы с расширением .doc , если это имеет значение.

  Ответить  
 
 автор: cheops   (15.08.2011 в 19:21)   письмо автору
 
   для: fsol   (15.08.2011 в 19:16)
 

Папка где лежат файлы, как соотносится с папкой, где лежит скрипт? Как они расположены друг относительно друга?

  Ответить  
 
 автор: fsol   (15.08.2011 в 19:34)   письмо автору
 
   для: cheops   (15.08.2011 в 19:21)
 

Открылось после того , как я переместил папку куда записывается файлы в папку где лежит файл который отображает саму таблицу с названием.
Обнаружил другую проблему. При загрузке файла с другого компьютера (т.е тот компьютер где я отлаживаю скрипт является частью локальной сети ) т.е например из папки "входящие" файлы в папку загрузки копируются , но при нажатии на них выходит сообщение Not Found . при загрузки файла с своего компьютера все нормально.

  Ответить  
 
 автор: fsol   (16.08.2011 в 19:34)   письмо автору
 
   для: fsol   (15.08.2011 в 19:34)
 

Теперь не открываюся файлы с именами написанные на кириллице.

  Ответить  
 
 автор: bab-nike   (12.08.2011 в 00:23)   письмо автору
 
   для: fsol   (11.08.2011 в 20:21)
 

а вот так вы пробовали?
while ($m=mysql_fetch_array($r))
 {
 echo " <tr>
 <td> <a href= >".$m['user_file'].">ОПИСАНИЕ ФАЙЛА</a>

попробуйте, не пожалейте:)

  Ответить  
 
 автор: Valick   (12.08.2011 в 00:24)   письмо автору
 
   для: bab-nike   (12.08.2011 в 00:23)
 

пожалеет))

  Ответить  
 
 автор: Гавриленко Дмитрий   (12.08.2011 в 11:14)   письмо автору
 
   для: Valick   (12.08.2011 в 00:24)
 

Действительно..


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


if (copy($HTTP_POST_FILES["filename"]["tmp_name"],$path =
"C:\temp\".$HTTP_POST_FILES["filename"]["name"]))
{
echo("Файл загружен");

mysql_query("insert into `files` values(null,' $HTTP_POST_FILES["filename"]["name"]','$path')") or die (unlink($path));

}
else
{
echo("Ошибка загрузки");
}
?>


Писал через телефон, возможны опечатки)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования