Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачивание файла с сервера, Delphi 
:(
    Опции темы
PROme
  Дата 17.1.2004, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: нет
Всего: 1



Помогите!
Нужно скачать файл с сервера.
Скорее всего можно по 80-му порту.

Как это реализовать? А то в этом я полный О biggrin.gif


--------------------
SEO-мастер
PM MAIL WWW   Вверх
<Spawn>
Дата 17.1.2004, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



с какого сервера? с FTP?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
PILOT
Дата 17.1.2004, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: нет
Всего: 54



C помощью NMFTP компонента.
Код

NMFTP.Host := 'ftp.microsoft.com';
NMFTP.Port := 21;
NMFTP.Timeout := 5000;
NMFTP.UserID := 'anonymous';
NMFTP.Password := '[email protected]';
try
  NMFTP.Connect;
except
  On E:Exception do
    ShowMessage(E.message);
end;

а далее читать хелп.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Полудненко Олег
Дата 17.1.2004, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

Репутация: 1
Всего: -11



Возможно моё предлжение и неверно, но нельзя ли просто прописать абсолютный путь (там "http://www...") и скопировать как обычный файл?
PM MAIL   Вверх
PROme
Дата 17.1.2004, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: нет
Всего: 1



Спасибо всем за ответы!
Я писал что 80-й порт... это вроде http
Хотя мона и по ФТПшнику...
PILOTIK спасибо за пример, но он мне мало что дает... NMFTP... что это за компонента и де она живет?
Ну, ок подконектились, а че дальше? Как файл то скачатьconfused.gif

ЗЫ: конеект по 80 порту все еще интересует (+ там же авторизации не надо, должно быть по проще)


--------------------
SEO-мастер
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 17.1.2004, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Мне тута подкинули текстик, который достаточно просто качает файлы из Интернета:
Цитата

В uses добавить WinInet
CODE 
procedure GetInetFile(const fileURL, FileName: String);
const BufferSize = 32768;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin

hSession := InternetOpen( PChar(sAppName),
              INTERNET_OPEN_TYPE_PRECONFIG,
              nil, nil, 0);
try
hURL := InternetOpenURL( hSession,
          PChar(fileURL),
          nil,0,0,0);
try
  AssignFile(f, FileName);
  Rewrite(f,1);
  repeat
  InternetReadFile( hURL, @Buffer,SizeOf(Buffer), BufferLen);
  BlockWrite(f, Buffer, BufferLen);
  until BufferLen = 0;

  CloseFile(f);
finally
  InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end;

   
end;

PM   Вверх
PROme
Дата 17.1.2004, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: нет
Всего: 1



Спасибо!
Щас проверим.


--------------------
SEO-мастер
PM MAIL WWW   Вверх
PROme
Дата 18.1.2004, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: нет
Всего: 1



Ок.
Все пахает хорошо.
Спасибо огромнейшее за помощь!
Но я тут в этом деле слаб... как там можно привезать эту скачку к статус бару? Было бы неплохо.


--------------------
SEO-мастер
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 18.1.2004, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



А что надо отобразить в StatusBar'е?

Если речь идёт, скажем о проценте загрузки файла, то это просто:
1) Получи размер файла в интернете (это где-то на форуме уже обсуждалось)
2) После BlockWrite() можно вставить что-то вроде этого:
Код

Pr:=Round(FileSize(f) * 100 / FileSizeF);

, где Pr - процент, FileSizeF - размер скачиваемого файла.

Должно работать...
PM   Вверх
PROme
Дата 19.1.2004, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: нет
Всего: 1



Цитата
1) Получи размер файла в интернете (это где-то на форуме уже обсуждалось)


sad.gif не могу найти sad.gif
и на других форумах никто ничего сказать не может
подскажите, плиз!


--------------------
SEO-мастер
PM MAIL WWW   Вверх
PROme
Дата 19.1.2004, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: нет
Всего: 1



Проблема решена.
Нужно юзать InternetQueryDataAvailable(hURL, fSize,0,0);
Всем спасибо!


--------------------
SEO-мастер
PM MAIL WWW   Вверх
PROme
Дата 27.1.2004, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: нет
Всего: 1



Так, в продолжение появилась еще одна проблема (даже две), так что я решил возрабить топик =))
А проблема в следующем - запускаем прогу, все ок, скачивает, как надо... но вот при повторной скачке он не качает (а только делает вид) и записывает файл на винт с какого-то буфера... как от этого избавитьсяconfused.gif
На всякий случай код:

Код
procedure TForm2.GetInetFile(const fileURL, FileName: String);
const BufferSize = 32768;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen, fSize: DWORD;
f: File;
sAppName: string;
begin
fSize:=0;
hSession := InternetOpen( PChar(sAppName),
             INTERNET_OPEN_TYPE_PRECONFIG,
             nil, nil, 0);
try
hURL := InternetOpenURL( hSession,
         PChar(fileURL),
         nil,0,0,0);
InternetQueryDataAvailable(hURL, fSize,0,0);
ProgressBar1.Max:=fSize;
try
 AssignFile(f, FileName);
 Rewrite(f,1);
 repeat
 InternetReadFile( hURL, @Buffer,SizeOf(Buffer), BufferLen);
 InternetQueryDataAvailable(hURL, fSize,0,0);
 ProgressBar1.Position:=ProgressBar1.Max-fSize;
 BlockWrite(f, Buffer, BufferLen);
 until BufferLen = 0;

 CloseFile(f);
finally
 InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end;

end;


Вторая трабла - перевод строки в текстовом файле (там Юних, тут Вин), че делать?

За ранее всем большой бииир smile.gif


--------------------
SEO-мастер
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 27.1.2004, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Про скачку: в том же Inet'е есть процедурки для работы с FTP, способ закачки тот же...
PM   Вверх
PROme
Дата 27.1.2004, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: нет
Всего: 1



Цитата
Про скачку: в том же Inet'е есть процедурки для работы с FTP, способ закачки тот же...


Спасибо, сами знаем.
Но я не это спрашивал, у меня другие проблемы!


--------------------
SEO-мастер
PM MAIL WWW   Вверх
Cheba
Дата 28.1.2004, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Цитата
Вторая трабла - перевод строки в текстовом файле (там Юних, тут Вин), че делать?
Перекодировать. У Вынь - \r\n, у Unix - \n. С заменой, думаю, сам справишся.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.