|
|
|
| Здравствуйте. Такая проблема.
Нужно что бы выводимое название файла (название хранится в базе) в виде гиперссылки, при нажатии на который открывался сам файл. Т.е файл закачивается на сервер ,через форму ввода. Далее название файла выводится .
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 ?> . | |
|
|
|
|
|
|
|
для: fsol
(11.08.2011 в 20:21)
| | помимо имени файла в базе обычно хранят абсолютный или относительный путь к файлу
да и с именем не все так просто :) | |
|
|
|
|
|
|
|
для: fsol
(11.08.2011 в 20:21)
| | Ну стоит сохранить файл $_FILES["filename"]["tmp_name"] в директория какую нибудь и по-мимо названия записать еще и путь. Ну валик об этом и писал. | |
|
|
|
|
|
|
|
для: fsol
(11.08.2011 в 20:21)
| | А при загрузки файла на сервер вы куда их помещает? Или так и оставляете во временной директории? Из временной директории файлы регулярно удаляются и обратиться напрямую к ней не получится. Если хотите, чтобы файл жил на сервере долго, его нужно переместить в одну из директорий виртуального хоста либо при помощи функции move_uploaded_file(), либо при помощи copy(). А в гиперссылке указывать путь до этой директории-хранилища. | |
|
|
|
|
|
|
|
для: cheops
(11.08.2011 в 20:42)
| | я пишу так:
if (copy($HTTP_POST_FILES["filename"]["tmp_name"],
"C:\temp\".$HTTP_POST_FILES["filename"]["name"]))
{
echo("Файл загружен");
}
else
{
echo("Ошибка загрузки");
}
?> | |
|
|
|
|
|
|
|
для: fsol
(12.08.2011 в 00:09)
| | вопросы подобные вашему часто возникают на форуме, сегодня промелькнула идея написать что-то типа статьи на данную тему именно не просто загрузки файла на сервер (такого на форуме навалом)
а загрузки-хранения-обработки файлов на сервере | |
|
|
|
|
|
|
|
для: Valick
(12.08.2011 в 00:14)
| | это хорошо. Мне то как файл открыть ? | |
|
|
|
|
|
|
|
для: 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 Только удостоверьтесь ложаться ли туда файлы, вообще символ \ нужно строках экранировать, т.е. писать так \\ | |
|
|
|
|
|
|
|
для: cheops
(12.08.2011 в 00:18)
| | Сделал так.При нажатии на файл браузер выводит:
Предупреждение. Firefox не может определить,как открыть данный адрес, т.к протокол (c) не связан ни с одним приложением. | |
|
|
|
|
|
|
|
для: fsol
(12.08.2011 в 21:21)
| | Да, лучше их не C:/temp копировать, а в подпапку вашего виртуального хоста. | |
|
|
|
|
|
|
|
для: cheops
(12.08.2011 в 21:31)
| | создал папку localhost (C:/WebServers/home/localhost/www/.....
не отткрывается. | |
|
|
|
|
|
|
|
для: fsol
(15.08.2011 в 18:29)
| | 1) Сам скрипт где лежит относительно папки?
2) После загрузки файла - он появляется в директории назначения?
3) Если прописать к изображению адрес прямо в строке браузера - изображение отображается? | |
|
|
|
|
|
|
|
для: cheops
(15.08.2011 в 19:06)
| | 1)скрипт и папка куда записываются файлы лежит в папке site (С:/WebServers/..../www/Site)
2) Да . после загрузки файл появляется в той папке которая записана в скрипте
3) Не знаю , не делал.
я загружаю на сервер файлы с расширением .doc , если это имеет значение. | |
|
|
|
|
|
|
|
для: fsol
(15.08.2011 в 19:16)
| | Папка где лежат файлы, как соотносится с папкой, где лежит скрипт? Как они расположены друг относительно друга? | |
|
|
|
|
|
|
|
для: cheops
(15.08.2011 в 19:21)
| | Открылось после того , как я переместил папку куда записывается файлы в папку где лежит файл который отображает саму таблицу с названием.
Обнаружил другую проблему. При загрузке файла с другого компьютера (т.е тот компьютер где я отлаживаю скрипт является частью локальной сети ) т.е например из папки "входящие" файлы в папку загрузки копируются , но при нажатии на них выходит сообщение Not Found . при загрузки файла с своего компьютера все нормально. | |
|
|
|
|
|
|
|
для: fsol
(15.08.2011 в 19:34)
| | Теперь не открываюся файлы с именами написанные на кириллице. | |
|
|
|
|
|
|
|
для: fsol
(11.08.2011 в 20:21)
| | а вот так вы пробовали?
while ($m=mysql_fetch_array($r))
{
echo " <tr>
<td> <a href= >".$m['user_file'].">ОПИСАНИЕ ФАЙЛА</a>
|
попробуйте, не пожалейте:) | |
|
|
|
|
|
|
|
для: bab-nike
(12.08.2011 в 00:23)
| | пожалеет)) | |
|
|
|
|
|
|
|
для: 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("Ошибка загрузки");
}
?>
Писал через телефон, возможны опечатки) | |
|
|
|