[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите скачать файл
Гость_Fenix
Здравствуйте, уважаемые посетители форума.
Столкнулся с такой проблемкой:
Есть таблица в базе данных. В одном из полей хранятся
Прямые ссылки на файл типа file/file.rar
Необходимо создать возможность скачкавния файлов.
Для реализации этого с помощью запроса выбираю значения полей. И присваиваю их через цикл while переменной $к.
Далее пишу
Header('content-type: application/octet-stream');
Header('accept-ranges: bytes');
Header('content-disposition: attachment; filename="$k"');
Но вместо файла он мне предлагает скачать файл с именем переменной. Можт нужно как нить преобразовать значения переменной?
Заранее спасибо.
dr_Lev
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
Исправил, теперь при попытке скачкавния он предлагает скачать самого себя, без расширения. Т.е. Файл где написаны хидеры называется skach.php при скачивании предлагается сохранить skach.
У меня в одном файле происходит выборка из таблицы. С помощью кнопки (в form action указан файл загрузки), второй файл соответственно загрузка. Можт как то по другому можно это организовать?
twin
Цитата
Для реализации этого с помощью запроса выбираю значения полей. И присваиваю их через цикл while переменной $к.
Далее пишу
Header('content-type: application/octet-stream');
Header('accept-ranges: bytes');
Header('content-disposition: attachment; filename="$k"');

А как узнать какой именно? Тут все перепутано. Файл со смешным названием skach.php должен отдать только один файл, там цикла быть не может по определению. В него нужно передать либо
1. идентификатор (и тогда нужен еще один запрос)
2. имя файла (и тогда именно его и подставлять в заголовок)

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Гость_Fenix
Я попробую более точно описать вопрос выложив два моих файла
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
Если кому интересно, то мой недочет был в следующем (выделено жирным)

?>

<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>
<? }

?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.