Змінюй хід війни! Допомагай ЗСУ!

вопрос по html

🔴 21:30 Повітряна тривога в Харків.обл.
Статус: Offline
Реєстрація: 20.10.2008
Повідом.: 461
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #1
вопрос по html

итак есть стандартный линк типа:
Код:
<a href="хттп://трататаматата/какойтофайл[B].rar[/B]">скачать какойтофайл</a>

вопрос: почему на одном сайте клацая на этот линк предлагается скачать файл .rar, а на другом тупо открывает этот файл? как сделать чтобы и на втором сайте файл предлагало скачать?
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #2
К линку и ХТМЛю в целом это не имеет никакого отношения.
Это все злые сервера, отдают разные заголовки.
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #3
и как с этим бороться? мож что-то на java приписать?
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #4
по всей видимости какая-то лажа с хедерами или кодировкой. для такого случая я использую ссылку вида
<a href="хттп://какойТоХост.ком/get_file.php?file=somefile.rar">LINK</a>
а в get_file.php вбиваю код
PHP:
<?php
$link = $_GET['file'];
if ( isset($link)){
$file_path = 'тут путь к файлу от рута'.$link;
    if( file_exists( $file_path ) ) {
		$file_res = fopen( $file_path, 'r' );
	    $file_size = *filesize( $file_path );
	    
		header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
		header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
		header("Cache-Control: no-store, no-cache, must-revalidate");
		header("Cache-Control: post-check=0, pre-check=0", false);
		header("Pragma: no-cache");
	    header("Content-Length: {$file_size}");	
		header('Content-Disposition: attachment; filename="'.$link.'"');
		header('Content-type: application/octet-stream');
		
		echo fread( $file_res, $file_size );
	    
	} 
}
?>
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #5
еще можно предлагать пользователям нажимать "Сохранить как... "

Больше всего меня кумарит, когда ищешь картинки через гугл. типа нашел, жмешь "показать рисунок", а его предлагается открыть или выводятся кракозябры. Приходится возвращаться на шаг вперед и блин скачивать... вместо того, чтобы скопировать в буфер загруженный и вставить в фотошоп
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #6
rommel56, это кушает много памяти
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #7
Решение в лоб, без смекалки так сказать:

1- Если ты владелец контента - выкладывай в zip-формате - проблема уйдет (проверено). В основном Opera так глючит
2 - Если не ты владелец - используй Download Master или другие менеджеры загрузок.
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #8
...:::Alex:::...
не спорю, но предложи другие варианты? да и не думаю, что еще остались в природе хиленькие сервера, которые не потянут такую нагрузку, если конечно файл не совсем здоровый)

ecco
разве что так =)
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #10
все дело в mime-types, посмотрите на сервере файлик mime.types

сервер отдает в заголовках поле Content-type согласно этому файлику(например Content-type: image/jpeg, или application/x-rar), браузеру пофиг на расширение, он смотрит именно content-type который ему говорит сервер.

а еще есть веселый заголовок Content-disposition, ты можешь кликнуть на Посилання видалено а браузер тебе предложит его сохранить под именем trojan.exe
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #11
...:::Alex:::...
не спорю, но предложи другие варианты? да и не думаю, что еще остались в природе хиленькие сервера, которые не потянут такую нагрузку, если конечно файл не совсем здоровый)

ecco
разве что так =)

readfile
либо
fread через буффер

на шаред хостингах, как правило памяти дают 16Мб, и пох, что стоит 2-4гб озу.
этого очень мало.
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #12
Была подобная хрень. Проблема оказалась в кириллице, которой было написано имя файла) Хотя на некоторых браузерах все было нормально...
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #13
rommel56
Оно то так конечно сработает, только нет докачки, не указывается имя файла(можно поправить), и нагружать сервер будет намного больше. А еще большой файл вообще нельзя будет скачать если закачка идет дольше установленного времени выполнения.

Как правильно сказал eyeland все дело в не прописанных mime-type для нужных расширений, хостера просить конечно не всегда можно, но кто мешает прописать нужное у себя в хтакесс? ;)
Создаем файлик .htaccess с таким содержанием, и кладем в нужную папку. Бывает что хостер и хтакесс запрещает, но тогда уж точно хостера менять надо
AddType application/x-rar .rar
AddType application/x-7z .7z
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #14
rommel56
Оно то так конечно сработает, только нет докачки, не указывается имя файла(можно поправить), и нагружать сервер будет намного больше. А еще большой файл вообще нельзя будет скачать если закачка идет дольше установленного времени выполнения.

все решаемо )

докачка:
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.


имя файла указывается в хидере

нагружать будет не на много

время выполнения - set_time_limit(0)
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #15
Никто не спорит что все решаемо, только нафих? При желании можно и на пхп веб-сервер написать, тоже будет работать, и апач не нужен :D
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #16
$link = $_GET['file'];
if ( isset($link)){
$file_path = 'тут путь к файлу от рута'.$link;
if( file_exists( $file_path ) ) {
$file_res = fopen( $file_path, 'r' );
$file_size = *filesize( $file_path );

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Length: {$file_size}");
header('Content-Disposition: attachment; filename="'.$link.'"');
header('Content-type: application/octet-stream');

echo fread( $file_res, $file_size );

}
}
?>
За первое - расстрелять из крупнокалиберного пулемета. За то, что открывает файл не в бинарном виде.
А за второе три года медленной кастрации :) Что будет с сервером, если так попробовать качнуть с него фильм?
Тяжело чтение/запись вайлом обернуть?
while(!feof($file_res))
{
echo fread( $file_res, 1024);
}
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #17
За первое - расстрелять из крупнокалиберного пулемета. За то, что открывает файл не в бинарном виде.
А за второе три года медленной кастрации :) Что будет с сервером, если так попробовать качнуть с него фильм?
Тяжело чтение/запись вайлом обернуть?
while(!feof($file_res))
{
echo fread( $file_res, 1024);
}

АГАГАГАГАГАГАГА ИСТЕРИКА
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #18
по всей видимости какая-то лажа с хедерами или кодировкой. для такого случая я использую ссылку вида
<a href="хттп://какойТоХост.ком/get_file.php?file=somefile.rar">LINK</a>
а в get_file.php вбиваю код
PHP:
<?php
$link = $_GET['file'];
if ( isset($link)){
$file_path = 'тут путь к файлу от рута'.$link;
    if( file_exists( $file_path ) ) {
		$file_res = fopen( $file_path, 'r' );
	    $file_size = *filesize( $file_path );
	    
		header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
		header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
		header("Cache-Control: no-store, no-cache, must-revalidate");
		header("Cache-Control: post-check=0, pre-check=0", false);
		header("Pragma: no-cache");
	    header("Content-Length: {$file_size}");	
		header('Content-Disposition: attachment; filename="'.$link.'"');
		header('Content-type: application/octet-stream');
		
		echo fread( $file_res, $file_size );
	    
	} 
}
?>

Таким образом можно получить любой файл с сервера например index.php или inc/bd.php или еще какой . Аккуратнее и стаким подходом.
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #19
не делайте так НИКОГДА. за отдачу файлов скриптами нужно отправлять в газенваген и перерабатывать на метан, который так нужен стране. Для отдачи статики есть нормальные, гуманные средства. НЕ ОТДАВАЙТЕ ФАЙЛЫ СКРИПТАМИ иначе падет на вас гнев святого хостера и ваша душа будет проклята страшным проклятием, и вы будете обречены вечно бродить по интернетам в поисках выхода, но выхода не найдете потомучто все страницы выдают ошибку и не открываются.
 
  • 🔴 21:30 Повітряна тривога в Харків.обл.
  • #20
Назад
Зверху Знизу