IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Как сделать, чтоб вместо показа файла(.jpg,.gif) IE предложил его загрузить?) (https://www.imho.ws/showthread.php?t=11763)

udr5 23.09.2002 13:31

Как сделать, чтоб вместо показа файла(.jpg,.gif) IE предложил его загрузить?)
 
Привет народ.
Проблема у меня. Как выяснилось - не простая.
Вот допустим у меня лежит файло на вэбе -> file.jpg.
Если на него сделать линк, то эксплорер его просто покажет в новом окне, тоесть выступит в роли просмотрищика.
А мне надо каким-то боком сделать так, что когда кликаеш по ссылке он его бы предложил сохранить на диске. (как происходит с файлами .exe или .zip).
Переименовывать файлы с другим расширением, паковать в зипы, кликать правой кнопкой --- НЕЛЬЗЯ.
Файлы должны быть обычными графическими файлами.
Собственно и причина для открытия данного топика - есть люди которые не умеют кликать правой кнопкой по ссылке и выбирать "Save Targe As..."
А если им дать .zip так они тогда вообще не будут знать, что с этим делать, хоть 20 страниц обьяснений напиши......
Уф........
Я даже и искать не знаю где и как...
Вроде нужно header менять, или что-то типа того...
Плиз подсобите
:-))

Stasik 23.09.2002 19:02

Код:

<?
header("Content-type: unknown/xxx");
header("Content-Disposition: attachment; filename=image.gif");
$fd = fopen("image.gif", "r");
while (!feof ($fd)) {
    $buffer = fgets($fd, 4096);
    echo $buffer;
}
fclose ($fd);
?>

не пробовал но должно пойти

udr5 23.09.2002 19:11

Класс :-)
спасибо огромное.
Заработало :-)
Правда у меня теперь другая проблема - как к файлу путь указать? Релайтив не работает, а физический указать нет возможности.
Мучаюсь короче....
:баран:

Stasik 23.09.2002 20:37

почему нет возможносит?

udr5 23.09.2002 20:40

Потому, что сервер другой. Один вэб - на котором бежит вся аппликация, а фторой файл - с файлами на борту.
Есть, конечно, драйв замэпленный, но ненадежно как-то. Мне кажется...

Stasik 24.09.2002 01:29

Код:

<?
header("Content-type: unknown/xxx");
header("Content-Disposition: attachment; filename=image.gif");
$fd = fopen("http://www.server2.ru/image.gif", "r");
while (!feof ($fd)) {
    $buffer = fgets($fd, 4096);
    echo $buffer;
}
fclose ($fd);
?>

с тебя пиво :xex:

а вот ещё.. апгрейдед.. чтобы браузер (и dl manager) размер картинки знал... только *немного* (чуть-чуть) сервер грузить будет.. :xex: хотя можно оптимировать через скрипт на удалённом компе... но не забивай голову.. всё будет кульно

Код:

<?
$fd = fopen("http://www.server2.ru/image.gif", "r");
while (!feof ($fd)) {
    $buffer .= fgets($fd, 4096);
}
fclose ($fd);
header("Content-type: unknown/xxx");
header("Content-Length: ".strlen($buffer));
header("Content-Disposition: attachment; filename=image.gif");
echo $buffer;
?>


udr5 25.09.2002 20:52

Да с пивом нет проблем, слава Б-гу.
Тут одна фигня обнаружилась, так она все нафиг загубила: Если юзер качает файл большой, типа 5 мега, и в процессе загрузки через эксплорер кликает на "Cancel" то тогда вся сессия умирает напрочь и ни один линк не работает после этого уже. Вроде как переполнение буффера происходит, либо что-то в этом роде. Причем это происходит только с эксплорером. В нетскейпе ничего подобного не происходит - кликай на линку сколько хочеш и отменяй в просессе сколько хочеш. Как ни мучай броузер - не затыкается. А эксплорер пару-тройку раз кликнеш и повис.....
Почитал в MSDN - им это вроде как известно. Советуют ActivX компонент писать либо java Applet использовать......
Так как жить-то? У yahoo.com есть возможность файлы графические в брифкейс складывать. А если захочеш можешь их обратно на комп сгрузить - так сколько не играй с доунлоадом и последующей отменой - ничего не састревает.....
Нда.....

Stasik 25.09.2002 21:38

странно очень, была у меня эта проблемка.. я её решал с плмошью php сессий... т.е. пересохранял файл - а потом давал скачивать + проверял активнось..... темп файлы удалял через 10-15 минут, но места это жрать будет


хотя по идее

Код:

<?
$fd = fopen("http://www.server2.ru/image.gif", "r");
while (!feof ($fd)) {
    $buffer .= fgets($fd, 4096);
}
fclose ($fd);
header("Content-type: unknown/xxx");
header("Content-Length: ".strlen($buffer));
header("Content-Disposition: attachment; filename=image.gif");
echo $buffer;
?>

виснуть не должен

udr5 25.09.2002 21:41

Как это?
Даже если и пересохранять, все равно надо как-то юзеру файл передавать......
Я вот тут нашел фигню . Мимоходом....

http://support.microsoft.com/default...;en-us;Q266305

Stasik 25.09.2002 21:48

ну вот и забудь об этом.... а у тебя какой? у меня вот 6.0

udr5 25.09.2002 21:51

А из моих 25.000 юзверов 75% - MSIE 5.х......... ((((((

Stasik 25.09.2002 22:06

патч выложи а сделай проверку версии через user-agent... хотя саксит это... M$ SUXXX


Часовой пояс GMT +4, время: 17:55.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.