Форум: "Основная";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизКак скачать каринку с помощью idHTTPServer Найти похожие ветки
← →
BFG9k © (2006-10-25 13:31) [0]
procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var FileStream:TFileStream;
FileName:string;
begin
AResponseInfo.FreeContentStream:=False;
FileName:=ARequestInfo.Document;
FileName:=fRoot+FileName;
FileStream:=TFileStream.Create(FileName, fmOpenRead);
try
AResponseInfo.ContentStream:=FileStream;
AResponseInfo.WriteContent;
finally
FileStream.Free;
end;
end;
При выполнении этого кода для графического изображения браузер показывает картинку. Как сделать так, чтобы браузер скачивал картинку вместо того, чтобы выводить ее на экран ?
← →
Reindeer Moss Eater © (2006-10-25 13:34) [1]А откуда сервер знает зачем у него просят картинку?
Ему ли не по барабану что там с ней собираются делать?
← →
Сергей М. © (2006-10-25 13:35) [2]Этот код не имеет ни малейшего отношения к браузеру.
← →
BFG9k © (2006-10-25 13:42) [3]
> Этот код не имеет ни малейшего отношения к браузеру.
Естественно он имеет отношение к серверу. Однако браузер способен качать картинки по велению сервера. Например на mail.ru можно скачать прикрепленный к письму файл независимо от формата.
← →
BFG9k © (2006-10-25 13:49) [4]Перед процессом скачивания следует добавить :
AResponseInfo.contentType:="application/rar-archive";
← →
Reindeer Moss Eater © (2006-10-25 13:50) [5]Сервер указывает спец.тип контента, а браузер считает, что рендерить этот контент не надо, а надо сохранить на диске.
Вот и все.
← →
Reindeer Moss Eater © (2006-10-25 13:52) [6]Перед процессом скачивания следует добавить :
Убедившись предварительно что контент отдается по ссылке предназначенной для скачивания на диск. А не вообще всегда.
← →
Slym © (2006-10-26 04:07) [7]procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var FileName:string;
begin
FileName:=ARequestInfo.Document;
//Обязятельно обработать FileName на наличие выхода из корня аля ..\..\..
FileName:=fRoot+FileName;
AResponseInfo.ServeFile(AThread,FileName);
end;
← →
BFG9k © (2006-10-26 14:39) [8]Slym:
idHTTPServer1.ServeFile(AThread,AResponseInfo,FileName);
Появилась новая проблема. На сервере картинки лежат в виде зазипованных файлов. При обращении к этому файлу сервер распаковывает его во временную директорию и возвращает картинку. По когда ее пытаются сохранить на диск описанным выше способом, в имя файла подставляется имя архива. Хотя фактически скачивается распакованная картинка. Искал в ResponseInfo имя документа, но так и не нашел :( В какую сторону копать ?
← →
Styx_ (2006-10-26 15:38) [9]Надо посылать заголовок Content-Disposition
← →
BFG9k © (2006-10-26 15:46) [10]
> Надо посылать заголовок Content-Disposition
А как это сделать с помощью idHTTPServer ? Свойство ContentType там есть, а вот ContentDisposition отсутствует ...
← →
Ketmar © (2006-10-26 15:47) [11]есть подозрение, что имелось в виду "надо обрабатывать полученый заголовок, в частности -- поле contentdisposition". %-)
← →
BFG9k © (2006-10-26 16:40) [12]К какого обьекта есть поле contentdisposition ? Кстати, чему должно быть равно значение content-disposition ? Каким образом все-таки можно послать заголовок ? Пробовал с AResponseInfo.RawHeaders - не работает ...
← →
Ketmar © (2006-10-26 16:40) [13]>[12] BFG9k(c) 26-Oct-2006, 16:40
>К какого обьекта есть поле contentdisposition ?
ни у какого нет.
← →
Styx_ (2006-10-26 16:44) [14]С idHTTPServer никогда не работал, поэтому не знаю. Но в PHP, чтобы файл сохранялся, и с правильным названием, пишется так:
header("Content-Disposition: attachment; filename=filename.ext");
Здесь, видимо, как-то через упомянутый RawHeaders
← →
Плохиш © (2006-10-26 16:44) [15]
AResponseInfo.CustomHeaders.Values["Content-disposition"] := "attachment; filename="blablabla.jpg"";
← →
BFG9k © (2006-10-26 16:46) [16]Плохиш - спасибо. Правда я и сам успел додуматься :) Тема закрыта ...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c