| |
|
|
| | Мне нужно чтобы спазу же начиналась загрузка файлов а не открывалась еще страница и потом начиналось скачивание файла.
Вот сам код:
Вот ссылка по которой должно сразу открываться окошечко для скачивания:
<?
echo "<A class='normlink' HREF='".$_SERVER['PHP_SELF']."?page=downloads&cat_id=".$_GET['cat_id']."&id_download=".stripslashes($row_download->id_download)."'>";
echo "Загрузить";
$file = $row_download->download_file;
$category = $row_download->category_file;
echo "</A>";
?>
|
Вот обработчик ссылки:
<?
$row = mysql_fetch_object($result);
$downloads_file = $row->downloads_file;
$download_file = $row->download_file;
$category_file = $row->category_file;
$downloads_file++;
$query = "UPDATE downloads SET downloads_file=$downloads_file WHERE id_download=$id";
mysql_query($query);
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
location = "<?
echo "/files/$category_file/$download_file";
?>";
//-->
</SCRIPT>
?>
|
И почему у меня в опере файлы открываются какимито иероглифами а не скачиваются. В IE все нормально! Может права на файл специальные поставить?
Буду рад если ответите! | |
| |
|
|
| |
|
|
| |
для: Buhen
(20.08.2007 в 11:35)
| | | header с типом содержимого отсылать, сообщать, что это файл | |
| |
|
|
| |
|
|
| |
для: bronenos
(20.08.2007 в 12:24)
| | | А можно пожалуйста код а тоя не смыслю в header и куда его вставлять? | |
| |
|
|
| |
|
|
| |
для: Buhen
(20.08.2007 в 12:40)
| | | А кто нибудь поможет с header? | |
| |
|
|
| |
|
|
| |
для: Buhen
(20.08.2007 в 14:28)
| | | не помню, поищите, на форуме вроде было | |
| |
|
|
| |
|
|
| |
для: bronenos
(20.08.2007 в 16:38)
| | | При обработке кода файл не сохраняется а выводится какими-то иероглифами!
Вот код:
<?
$download_file = $row->download_file;
$category_file = $row->category_file;
$file="files/$category_file/$download_file";
$str="Content-Disposition: attachment; filename=".$file;
header($str);
header("Content-type: application/octet-stream");
echo file_get_contents($file);
?>
|
Подскажите что исправить в коде! | |
| |
|
|
| |
|
|
| |
для: Buhen
(20.08.2007 в 11:35)
| | |
<?php
$type='тип_скачиваемого_файла';
$filename='имя_файла' //под этим именем браузер предложит сохранить;
$path='путь_и_настоящее_имя_файла_который_скачиваем';
header("Content-Type: \"$type\"");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename= \"$filename\"");
fpassthru(fopen($path,"rb"));
exit;
?>
|
| |
| |
|
|
| |
|
|
| |
для: Yuriev
(20.08.2007 в 22:26)
| | | Ваш код не действует. Файл все равно открывается в виде иероглифов!
И в заголовке Content-Type как указать несколько расширений а не только rar?
Вот код для примера который я использую:
<?
$type='rar';
$filename='sk-2006'; //под этим именем браузер предложит сохранить;
$path='sk-2006.rar';
header("Content-Type: \"$type\"");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename= \"$filename\"");
fpassthru(fopen($path,"rb"));
exit;
?>
|
| |
| |
|
|
| |
|
|
| |
для: Buhen
(21.08.2007 в 08:38)
| | | rar -это не тип, а расширение имени файла. Надо указывать тип MIME. Надо убедиться, что fopen находит скачиваемый файл, иначе передаст абракадабру. Можно попробовать так:
<?
$path='sk-2006.rar';//правильный путь и настоящее имя файла
if (!file_exists($path)) {
echo 'Передачи файла не будет по причине ненайденности';
} else {
$type = 'application/x-rar';
$filename='sk-2006.rar'; //насоящее имя или любое другое без пути;
header("Content-Type: \"$type\"");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename= \"$filename\"");
fpassthru(fopen($path,"rb"));
}
exit;
?>
|
| |
| |
|
|
| |
|
|
| |
для: Yuriev
(21.08.2007 в 10:40)
| | | Все равно файл только открывается в виде иероглифов!
Вот вам ссылка:
http://arkcs.ru/index.php?page=downloads&cat_id=2&id_download=35 | |
| |
|
|
| |
|
|
| |
для: Buhen
(21.08.2007 в 11:02)
| | | Над сделать так.
Если запрошен для скачивания файл, то выполняется вышенаписанный код.
До него и после него не должно быть ни html-тегов ни echo ни принт ни пробелов. Могут быть только вычисления. В синтаксисе php пробелы, естесственно, быть могут. Для этого в коде есть exit
Тогда по клику на ссылке страница не перегружается, а выскочит окно с запросом на сохранения файла.
Если запрошена страница, то выше указанный код не выполняется, а выполняется всё, что необходимо для формирования страницы и передачи её в браузер. | |
| |
|
|
| |
|
|
| |
для: Yuriev
(21.08.2007 в 15:10)
| | | Пробелов и принт и эхо нету в коде а файл все равно открывается. Помогите как сделать чтоб он скачивался?
Вот вам ссылка:
http://arkcs.ru/index.php?page=downloads&cat_id=2&id_download=35
Вот вам еще код:
<?
$path='sk-2006.rar';
if (!file_exists($path))
{
echo 'Передачи файла не будет по причине ненайденности';
} else
{
$type = 'application/x-rar';
$filename='sk-2006.rar';
header("Content-Type: \"$type\"");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename= \"$filename\"");
fpassthru(fopen($path,"rb"));
}
exit;
?>
|
| |
| |
|
|
| |
|
|
| |
для: Buhen
(21.08.2007 в 15:20)
| | | Как я понимаю никто не поможет со скачиванием файлов? | |
| |
|
|
| |
|
|
| |
для: Buhen
(22.08.2007 в 08:37)
| | |
<?php
header("Content-Type: ".filetype("file.rar"));
header("Content-Length: ".filesize("file.rar"));
header("Content-Disposition: attachment; filename=file.rar");
header("Content-type: application/force-download");
header("Content-type: application/octet-stream");
echo file_get_contents ("file.rar");
?>
|
Переменные куда надо вставите сами. | |
| |
|
|
| |
 7.4 Кб |
|
| |
для: sim5
(22.08.2007 в 09:01)
| | | В чистом виде код работает то есть если только ваш код (2sim5) будет в файле а в моем скрипте код почему то только открывает файлы в виде иероглифов. Может что-то мешает? Я лучше дам весь код скрипта. Вот он:
а также я его прикреплю.
<?
connect_db();
if ((isset($_GET['cat_id'])) AND ($_GET['cat_id'] != "") AND (isset($_GET['id_download'])) AND ($_GET['id_download'] != ""))
{
if((is_numeric($_GET['id_download'])) AND (is_numeric($_GET['cat_id'])))
{
$query="SELECT * FROM downloads,cat WHERE id_download=".$_GET['id_download']." AND ".$_GET['id_download']."=".$_GET['id_download']."";
$result = mysql_query ($query);
if (mysql_errno()!= 0)
{
echo "<p class='navig'>Данный файл не существует</p>";
}
else
{
if (mysql_num_rows ($result) == 0)
{
echo "<p class='navig'>Данный файл не существует</p>";
}
else
{
$row = mysql_fetch_object($result);
$downloads_file = $row->downloads_file;
$download_file = $row->download_file;
$category_file = $row->category_file;
$downloads_file++;
$query = "UPDATE downloads SET downloads_file=$downloads_file WHERE id_download=".$_GET['id_download']."";
mysql_query($query);
header("Content-Type: ".filetype("file.rar"));
header("Content-Length: ".filesize("file.rar"));
header("Content-Disposition: attachment; filename=file.rar");
header("Content-type: application/force-download");
header("Content-type: application/octet-stream");
echo file_get_contents ("file.rar");
exit;
}
}
}
else
{
echo "ХАКЕР";
}
}
else
{
if((isset($_GET['cat_id'])) AND ($_GET['cat_id'] != ""))
{
if((is_numeric($_GET['cat_id'])))
{
//Отображаем файлы данной категории
$query_download="SELECT * FROM downloads WHERE cat_id=".$_GET['cat_id']." AND ".$_GET['cat_id']."=".$_GET['cat_id']."";
$result_download = mysql_query ($query_download);
if (mysql_errno()!= 0)
{
echo "<p class='navig'>Данный файл не существует</p>";
}
else
{
if (mysql_num_rows ($result_download) == 0)
{
echo "<p class='navig'>В данной категории пока нет файлов</p>";
}
else
{
?>
<p class="navig"> »
<?
$query="SELECT * FROM cat WHERE id_cat=".$_GET['cat_id']."";
$result=mysql_query($query);
$row = mysql_fetch_object($result);
echo "".stripslashes($row->cat)."";
?>
</p>
<?
while ($row_download=mysql_fetch_object($result_download))
{
?>
<TABLE border="0" width="97%" cellpadding="0" cellspacing="2" class="files_text">
<TR>
<TD colspan="3">
<?
echo "<B>".stripslashes($row_download->download_file_name)."</B>";
?>
</TD>
</TR>
<TR>
<TD colspan="3">
<?
$comment = stripslashes($row_download->description_file);
$comment = htmlspecialchars($comment, ENT_QUOTES);
$comment = nl2br($comment);
$comment = str_replace("[u]","<u>",$comment);
$comment = str_replace("[U]","<u>",$comment);
$comment = str_replace("","<i>",$comment);
$comment = str_replace("[I]","<i>",$comment);
$comment = str_replace("","<B>",$comment);
$comment = str_replace("[B]","<B>",$comment);
$comment = str_replace("","<SUB>",$comment);
$comment = str_replace("[SUB]","<SUB>",$comment);
$comment = str_replace("","<SUP>",$comment);
$comment = str_replace("[SUP]","<SUP>",$comment);
$comment = str_replace("[/u]","</u>",$comment);
$comment = str_replace("[/U]","</u>",$comment);
$comment = str_replace("","</i>",$comment);
$comment = str_replace("[/I]","</i>",$comment);
$comment = str_replace("","</B>",$comment);
$comment = str_replace("[/B]","</B>",$comment);
$comment = str_replace("","</SUB>",$comment);
$comment = str_replace("[/sub]","</SUB>",$comment);
$comment = str_replace("","</SUP>",$comment);
$comment = str_replace("[/sup]","</SUP>",$comment);
$comment = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a
href=\\2>\\2</a>\\3",$comment);
$comment = str_replace("\n"," ",$comment);
$comment = str_replace("\r"," ",$comment);
$comment = preg_replace("#\[color=([a-z]+)\](.*?)\[/color\]#is", '<FONT COLOR="$1">$2</FONT>', $comment);
$comment = preg_replace("#\[size=([0-9]+)\](.*?)\[/size\]#is", '<FONT SIZE="$1">$2</FONT>', $comment);
$comment = preg_replace_callback("#\[url=((?:http|ftp|https)://)?([^\]]+)\](.*?)\[/url\]#is", 'func', $comment);
echo "".$comment."";
?>
</TD>
</TR>
<TR>
<TD>Сайт программы
<?
echo "<a href='".htmlspecialchars(stripslashes($row_download->url_programm), ENT_QUOTES)."' class='url_programm'>".htmlspecialchars(stripslashes($row_download->url_programm), ENT_QUOTES)."";
?>
</TD>
<TD>Версия
<?
echo "".htmlspecialchars(stripslashes($row_download->version_file), ENT_QUOTES)."";
?>
</TD>
<TD>
</TD>
</TR>
<TR>
<TD>Автор(добавивший):
<?
echo "".htmlspecialchars(stripslashes($row_download->author), ENT_QUOTES)."";
?>
</TD>
<TD>Скачиваний:
<?
echo "".stripslashes($row_download->downloads_file)."";
?>
</TD>
<TD nowrap>
<?
echo "<A class='normlink' HREF='".$_SERVER['PHP_SELF']."?page=downloads&cat_id=".$_GET['cat_id']."&id_download=".stripslashes($row_download->id_download)."'>";
echo "Загрузить";
$file = $row_download->download_file;
$category = $row_download->category_file;
echo "</A>";
$size = filesize("files/$category/$file");
if($size>1048576)
{
$size = round($size/1024/1024, 2);
echo "(".$size." Мб)";
}
else
{
$size = round($size/1024, 0);
echo "(".$size." Кб)";
}
?>
</TD>
</TR>
</TABLE>
<br>
<?
}
}
}
}
else
{
echo "ХАКЕР";
}
}
else
{
//В противном случае если не передана переменная то отображаются категории
$query_cat="SELECT * FROM cat";
$result_cat = mysql_query ($query_cat);
while ($row = mysql_fetch_object($result_cat))
{
echo "<p class='navig'> » <A class='normlink' HREF='index.php?page=downloads&cat_id=".stripslashes($row->id_cat)."'>".htmlspecialchars(stripslashes($row->cat), ENT_QUOTES)."";
$id_cat = $row->id_cat;
$query_count = "SELECT * FROM downloads WHERE cat_id=$id_cat";
$result_count = mysql_query ($query_count) or die("Неправильный запрос : " . mysql_error());
echo " (".mysql_num_rows($result_count).")";
echo "</A> ";
if ((isset($_SESSION['login'])) AND ($_SESSION['login'] != ""))
{
$query="SELECT * FROM users WHERE login='$_SESSION[login]' AND admin_status='1'";
$result=mysql_query($query);
if (mysql_num_rows ($result) == 0)
{}
else
{
echo "<A class='add_file' HREF='index.php?page=add_file&cat_id=".stripslashes($row->id_cat)."'>Добавить файл</A></p>";
}
}
else
{}
}
}
}
close_db();
?>
|
| |
| |
|
|
| |
|
|
| |
для: Buhen
(22.08.2007 в 10:42)
| | | Я не знаю - смеяться мне или что. Ну я ведь вам прописал file.rar как пример, а вы зачем себе его запулили? Это ведь не переменная - а подразумевается реальный файл file.rar. | |
| |
|
|
| |
|
|
| |
для: sim5
(22.08.2007 в 10:57)
| | | Я понял что реальный файл вот создал для пробы на сайте у себя файл file.rar. Ну если так то тогда надо заменить строки где идет загрузка файлов вот так:
Но это дело не меняет. Файл открывается а должен скачиваться!
$row = mysql_fetch_object($result);
$downloads_file = $row->downloads_file;
$download_file = $row->download_file;
$category_file = $row->category_file;
$downloads_file++;
$query = "UPDATE downloads SET downloads_file=$downloads_file WHERE id_download=".$_GET['id_download']."";
mysql_query($query);
$pathtofile="files/$category_file/$download_file";
header("Content-Type: ".filetype("$pathtofile"));
header("Content-Length: ".filesize("$pathtofile"));
header("Content-Disposition: attachment; filename=$pathtofile");
header("Content-type: application/force-download");
header("Content-type: application/octet-stream");
echo file_get_contents ("$pathtofile");
exit;
|
| |
| |
|
|
| |
|
|
| |
для: Buhen
(21.08.2007 в 15:20)
| | | Как же нету ? А куча HTML-кода идёт до скрипта скачивания файлов!!!
Должно выполняться или только код на скачивание или остальное!!!!!! | |
| |
|
|
| |
|
|
| |
для: Buhen
(20.08.2007 в 11:35)
| | |
<?
//Это Ваш файл index.php
if ($_GET['id_download']) {//запрошено скачивание
//выясняем какой запрошен файл
if ($_GET['id_download']==35) $path='sk-2006.rar';
if (!file_exists($path) $message = 'Передачи файла не будет по причине ненайденности';
else {
$type = 'application/x-rar';
$filename='sk-2006.rar';
header("Content-Type: \"$type\"");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename= \"$filename\"");
fpassthru(fopen($path,"rb"));
}
//если сюда выполнение кода дошло, значит запрошено скачивание и всё нормально
//и после exit ничего больше работать не должно
exit;
}
//если сюда выполнение кода дошло, значит запрошена страница, а не скачивание
//или запрошено скачивание, но файл не найден
//Далее идёт старый код страницы index.php
?>
<html>
<head>
<title>Моя страница</title>
</head>
<body>
<?
if ($message) echo $message;
?>
<a href="index.php?page=downloads&cat_id=2&id_download=35">Скачать файл sk-2006.rar</a>
</body>
</html>
|
Работает так.
Если запрошена индекс.пхп без параметра, то код на скачивание не выполняется, а грузится страница обычным образом.
Если запрошено скачивание и файл найден, то работает только код на скачивание, в браузере выскакивает окно на сохранение файла, страница не перегружается.
Если запрошено скачивание и файл не найден, то код на скачивание не работает, страница перегружается и на ней печатается сообщение о ненайденности. | |
| |
|
|
| |
|
|
| |
для: Yuriev
(22.08.2007 в 11:39)
| | | А мне то как исправить свой код? | |
| |
|
|
| |
|
|
| |
для: Buhen
(22.08.2007 в 12:15)
| | | У вас проблемы не с кодом скачивания как таковым... Почему бы вам четко не разделить код на часть запроса на скачивание файла, на часть загрузки файла, и собственно вывод страницы. Уж извините, но у меня ощущение хаоса, может в нем и причина. | |
| |
|
|
| |
|
|
| |
для: sim5
(22.08.2007 в 12:53)
| | | Короче я понял. Почему то когда например я набираю файл в котором например такой код:
<?
$pathtofile="file.rar";
header("Content-Type: ".filetype("file.rar"));
header("Content-Length: ".filesize("file.rar"));
header("Content-Disposition: attachment; filename=file.rar");
header("Content-type: application/force-download");
header("Content-type: application/octet-stream");
echo file_get_contents ("file.rar");
?>
|
Когда в адресной строке набираю например
http://адрес моего сайта/index.php?page=downloads&cat_id=2&id_download=35 Не появляется диалогове окно для скачивания а файл просто открывается в виде иероглифов.
Но когда я например набираю в адресной строке:
http://адрес моего сайта/downloads.php то появляется диалогове окно для скачивания файла.
Кто нибудь объяснит в чем дело? | |
| |
|
|
| |
|
|
| |
для: Buhen
(22.08.2007 в 13:30)
| | | Кто нибудь знает почему так? | |
| |
|
|
| |
|
|
| |
для: Buhen
(22.08.2007 в 15:04)
| | | >Кто нибудь знает почему так?
Ясновидящих нет и поэтому никто не знает как слеплен сайт.
Раз вставляете header в тело документа, отправляемого в браузер, скачиваемый файл и вставляется абракадаброй в тело документа.
Я ж вверху писал, что должно работать только одно: или код на скачивание или остальной код страницы.
>Но когда я например набираю в адресной строке:
http://адрес моего сайта/downloads.php то появляется диалогове окно для скачивания файла.
Так может надо изменить ссылки
с http://адрес моего сайта/index.php?page=downloads&cat_id=2&id_download=35
на http://адрес моего сайта/downloads.php?page=downloads&cat_id=2&id_download=35 | |
| |
|
|
| |
|
|
| |
для: Yuriev
(22.08.2007 в 16:42)
| | | Короче я решил сделать так:
Вот ссылка на скачивание файлов:(она находится в скрипте downloads.php)
<?
echo "<A class='normlink' HREF='downloads_result.php?cat_id=".$_GET['cat_id']."&id_download=".stripslashes($row_download->id_download)."'>";
echo "Загрузить";
$file = $row_download->download_file;
$category = $row_download->category_file;
echo "</A>";
?>
|
значения в ссылке правильно подсталяются то есть например ссылка такого примерно вида получается:
http://arkcs.ru/downloads_result.php?cat_id=2&id_download=35
Вот сам файл котрый обрабатывает ссылку:
downloads_result.php
<?
include_once ("includes/actions.php");
connect_db();
if ((isset($_GET['cat_id'])) AND ($_GET['cat_id'] != "") AND (isset($_GET['id_download'])) AND ($_GET['id_download'] != ""))
{
if((is_numeric($_GET['id_download'])) AND (is_numeric($_GET['cat_id'])))
{
$query="SELECT * FROM downloads,cat WHERE id_download=".$_GET['id_download']." AND ".$_GET['id_download']."=".$_GET['id_download']."";
$result = mysql_query ($query);
if (mysql_errno()!= 0)
{
echo "<p class='navig'>Данный файл не существует</p>";
}
else
{
if (mysql_num_rows ($result) == 0)
{
echo "<p class='navig'>Данный файл не существует</p>";
}
else
{
$row = mysql_fetch_object($result);
$downloads_file = $row->downloads_file;
$download_file = $row->download_file;
$category_file = $row->category_file;
$downloads_file++;
$query = "UPDATE downloads SET downloads_file=$downloads_file WHERE id_download=".$_GET['id_download']."";
mysql_query($query);
$pathtofile="files/$category_file/$download_file";
header("Content-Type: ".filetype("$pathtofile"));
header("Content-Length: ".filesize("$pathtofile"));
header("Content-Disposition: attachment; filename=$pathtofile");
header("Content-type: application/force-download");
header("Content-type: application/octet-stream");
echo file_get_contents ("$pathtofile");
exit;
}
}
}
else
{
echo "ХАКЕР";
}
close_db();
?>
|
Но почему то пройдя по ссылке появляется только пустой документ а должна начинаться закачка! | |
| |
|
|
| |
|
|
| |
для: Buhen
(23.08.2007 в 09:15)
| | | Почему GET параметры не срабатывают??? | |
| |
|
|