Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2010, 09:45   #1
jskorvin
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 16
Вопрос как узнать формат файла в TMemoryStream

Подскажите пожалуйста:
Как узнать что за файл находится в TMemoryStream?
Скачиваем файл в TMemoryStream
Код:
http:=TidHTTP.Create(nil);
MS:=TMemoryStream.Create;
http.Get('http://url2file.com/gets', MS);
Далее как-то нужно узнать формат файла, в моем случае это могут быть html (в случае ошибки) jpg, png, gif (в штатном режиме). Где-то должен содержаться хидер указывающий на формат, но вот как его узнать?
jskorvin вне форума Ответить с цитированием
Старый 29.10.2010, 10:29   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

а разве в ссылке нет расширения файла?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Stream:TMemoryStream;
url,r:WideString;
i,j:integer;
begin
try
Stream:=TMemoryStream.Create;
url:='http://devdelphi.ru/files/adosql.rar';
for i:=1 to length(url) do
begin
if url[i]='.' then
begin
j:=i;
end;
end;
r:=copy(url,j+1,length(url));
IdHTTP1.Get(url,Stream);
Stream.SaveToFile('myfile.'+r);
Stream.Free;
except
on e:Exception do
Stream.Free;
end;
end;
хотя мне вопрос интересен... ибо при передачи в сокетах правда не знаешь что пришло.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 29.10.2010, 10:34   #3
jskorvin
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
а разве в ссылке нет расширения файла?
Неа, пример ссылки http://social.purnomo.info/action/si.../code?c=671520

Поидее в случае с картинкой в файле содержится что-то наподобии
Код:
CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 75
Но почемуто я немогу раздобыть эти хидеры.

Бинго! Дошло до меня как определить формат файла не мучая мемористрим.
Код:
http.Response.RawHeaders.Text;
Их ведь ненужно запрашивать дополнительно, они уже есть и их вполне достаточно для определения содержимого попавшего в мемористрим
Цитата:
Date: Fri, 29 Oct 2010 06:54:37 GMT
Server: Apache
X-Powered-By: PHP/5.2.14
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: Elgg=7r736kd41mf85sj3m8l2hc0b92; path=/
Transfer-Encoding: chunked
Content-Type: image/jpeg
Барни: спасибо что откликнулся!

Последний раз редактировалось Stilet; 29.10.2010 в 12:13.
jskorvin вне форума Ответить с цитированием
Старый 29.10.2010, 11:16   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

да не за что ... но мне вопрос интересен... буду пробовать копаться.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 30.10.2010, 03:46   #5
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
и их вполне достаточно для определения содержимого попавшего в мемористрим
Хм... А я бы не надеялся на 100%... Content-Type вроде показывает что по мнению сервера он прислал...
Я б ещё по заголовку файла проверял... На всякий случай.....
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 22.04.2011, 07:23   #6
DSJ
Пользователь
 
Регистрация: 28.01.2009
Сообщений: 13
По умолчанию

http://www.gcmsite.ru/?pg=art&id=delphi-file-type - по моему, самый верный способ.
DSJ вне форума Ответить с цитированием
Старый 23.04.2011, 15:20   #7
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

DSJ хорошую ссылку кинул. Но я еще подкину готовый вариант с базами: http://mark0.net/code-tridlib-e.html
eduard93 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать тип файла VAsiliyMvv Общие вопросы Delphi 61 07.07.2010 10:27
Как узнать Сaption файла Yokka Общие вопросы C/C++ 7 04.06.2010 21:33
Как узнать размер файла? photozaz Общие вопросы Delphi 4 01.08.2008 00:29
Как узнать раширение файла? Irat Помощь студентам 4 10.04.2008 18:39
Как узнать имя файла??? Shurik Hacker Работа с сетью в Delphi 3 20.11.2007 17:06