Гость_Fenix
20.04.2010 - 06:02
Здравствуйте, уважаемые посетители форума.
Столкнулся с такой проблемкой:
Есть таблица в базе данных. В одном из полей хранятся
Прямые ссылки на файл типа file/file.rar
Необходимо создать возможность скачкавния файлов.
Для реализации этого с помощью запроса выбираю значения полей. И присваиваю их через цикл while переменной $к.
Далее пишу
Header('content-type: application/octet-stream');
Header('accept-ranges: bytes');
Header('content-disposition: attachment; filename="$k"');
Но вместо файла он мне предлагает скачать файл с именем переменной. Можт нужно как нить преобразовать значения переменной?
Заранее спасибо.
dr_Lev
20.04.2010 - 06:17
Header('content-disposition: attachment; filename="'.$k.'"');
или
Header("content-disposition: attachment; filename=\"$k\"");
P.S. Обрати внимание на кавычки, если двойные, то строка интерпретируется, и в ней заменяются переменные на их значения, а в одинарных кавычках все сохраняется как есть...
_____________
Фанатам Pascal:
<?php
function Write($str){echo $str;}
function WriteLn($str){Write($str."<br />");}
?>
Гость_Fenix
20.04.2010 - 07:30
Исправил, теперь при попытке скачкавния он предлагает скачать самого себя, без расширения. Т.е. Файл где написаны хидеры называется skach.php при скачивании предлагается сохранить skach.
У меня в одном файле происходит выборка из таблицы. С помощью кнопки (в form action указан файл загрузки), второй файл соответственно загрузка. Можт как то по другому можно это организовать?
Цитата |
Для реализации этого с помощью запроса выбираю значения полей. И присваиваю их через цикл while переменной $к. Далее пишу Header('content-type: application/octet-stream'); Header('accept-ranges: bytes'); Header('content-disposition: attachment; filename="$k"'); |
А как узнать какой именно? Тут все перепутано. Файл со смешным названием skach.
php должен отдать только один файл, там цикла быть не может по определению. В него нужно передать либо
1. идентификатор (и тогда нужен еще один запрос)
2. имя файла (и тогда именно его и подставлять в заголовок)
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Гость_Fenix
20.04.2010 - 10:12
Я попробую более точно описать вопрос выложив два моих файла
index.php
$zapros="select * from books
order by id";
$knigi=mysql_query($zapros);
while($knig = mysql_fetch_array($knigi)){
$knnam = trim($knig['name']);
$knnama=trim($knig['namea']);
$knzhanr=trim($knig['zhanr']);
$knizdatel=trim($knig['izdatel']);
$kncols=trim($knig['kols']);
$kndateizd=trim($knig['dateizd']);
$knannotat=trim($knig['annotat']);
$knpict=trim($knig['pict']);
$knbook=trim($knig['book']);
echo "$knbook";
?>
<table width="400" border="0">
<tr>
<td width="130" rowspan="3"><img src="<? echo "$knpict" ?>" width="120" height="120" alt="" /></td>
<td colspan="2"><? echo "$knnam"; ?></td>
</tr>
<tr>
<td width="152">Автор: <? echo "$knnama"; ?></td>
<td width="104">Жанр: <? echo "$knzhanr"; ?></td>
</tr>
<tr>
<td colspan="2"><? echo "$knannotat"; ?></td>
</tr>
<tr>
<td colspan="3">Издательство: <? echo "$knizdatel";?> Дата издания: <? echo "$kndateizd";?></td>
</tr>
<tr>
<td colspan="3"> Страниц: <? echo "$kncols"; ?></td>
</tr>
<tr>
<td colspan="3"><? echo'<form action="skach.php" method="post">
<input type="submit" name="Submit" value="Скачать" /><a href="books/skach.php">ssylka</a></form>'?> </td>
</tr>
</table>
<? }
?>
и файл со смешным названием skach.php
<?
header('Content-Type: application/octet-stream');
header('Accept-Ranges: bytes');
header('Content-disposition: attachment; filename="'$knbook'"');
?>
а так же таблица в БД
`id` TINYINT( 4 ) NOT NULL AUTO_INCREMENT ,
`name` TEXT NOT NULL ,
`namea` TEXT NOT NULL ,
`zhanr` TINYTEXT,
`izdatel` TINYTEXT,
`kols` TINYINT,
`dateizd` DATE,
`annotat` MEDIUMTEXT NOT NULL ,
`pict` TEXT,
`book` TEXT NOT NULL ,
в полях book на данный момент содержатся адреса файлов типа books/file.rar
пробовал ещё заносить в поля просто имена файлов, после чего перемещал файл skach.php в папку books и меняя его "упоминания" в файле index.php
Не спорю, код может быть "кривым", но кроме скачивания работает всё как задумано
Гость_Fenix
27.04.2010 - 15:17
Если кому интересно, то мой недочет был в следующем (выделено жирным)
?>
<table width="400" border="0">
<tr>
<td width="130" rowspan="3"><img src="<? echo "$knpict" ?>" width="120" height="120" alt="" /></td>
<td colspan="2"><? echo "$knnam"; ?></td>
</tr>
<tr>
<td width="152">Автор: <? echo "$knnama"; ?></td>
<td width="104">Жанр: <? echo "$knzhanr"; ?></td>
</tr>
<tr>
<td colspan="2"><? echo "$knannotat"; ?></td>
</tr>
<tr>
<td colspan="3">Издательство: <? echo "$knizdatel";?> Дата издания: <? echo "$kndateizd";?></td>
</tr>
<tr>
<td colspan="3"> Страниц: <? echo "$kncols"; ?></td>
</tr>
<tr>
<td colspan="3"><? echo'<form action="skach.php" method="post">
<input type="submit" name="Submit" value="Скачать" /><a href="books/skach.php?knbook=".$knbook."">ssylka</a></form>'?> </td>
</tr>
</table>
<? }
?>
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.