Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Вниз

Нужно скачать по ftp с удаленного компьютера сразу несколько файлов   Найти похожие ветки 

 
yastal   (2002-01-10 16:38) [0]

Нужно скачать по ftp с удаленного компьютера сразу несколько файлов, один файл получается,а как дальше? Удаленный работает под unix oc.


 
perov   (2002-01-11 08:00) [1]

вообщето получается список файлов с фтп-сервера
и потом в цикле качаещь по одному файлу


 
Lamok(real)   (2002-01-11 13:24) [2]

Делай потоки и в каждом качай файлы так помоему гоузила делает
будут качаться все сразу(но тормозить будет жутко) :))


 
amamed_3071   (2002-01-12 17:28) [3]

Var
tempfilename:string
filenames:array [1..100] of string;
1.береш список файлов k
(ustanovit imya faylov
filenames[1],filenames[2]...filenames[k]
polniy put /ftp/folder.../filename
)

i:=0
tempfilename:="c:\dftptmp.tmp";
NMFTP1.Download (filenames[i],tempfilename);

OnSuccess event

if Trans_Type=cmdDownload then
if i<k then
begin
CopyFile(tempfilename,Nuyniymesto);
i:=i+1
NMFTP1.Download(filenames[i],tempfilename);
end
else
CopyFile(tempfilename,Nuyniymesto);
budet rabotat kak zver


 
yastal   (2002-01-14 17:37) [4]

Предложение ammamed_3071 понятно, но в этом случае необходимо знать какие файлы качать,я так понимаю, но мне это наверное не подходит,потому что файлы в папке ftp каждый раз обновляются.
Интересен ответ perov`a но подскажи как получить список файлов с ftp, я новичек в этом деле.А лучше если куском кода, пожалуйста.


 
amamed_3071   (2002-01-16 09:44) [5]

NLIST OR list у меня ест похоже на это

Дерево примерно такого вида
Folder
08080
09000
10001
09000
08080
10001
10001
08080
09000
Здес 08080 09000 и 10001 номера точек(Фирм) похоже ни инбох и оутбох программа смотрет в инбох скачает все файлы (кроме тмп) с инбохса и со своего оутбохса отправляет все файлы


 
perov   (2002-01-17 11:06) [6]

библиотека Indy
используем TIdFTP
получаем список файлов с фтп сервера с помощью метода List:

tidftp1.user := ".....";
tidftp1.password := ".....";
TIdFTP1.Connect;
dest := TString.Create;
tidftp1.List(dest, "*.*", false);
for i := 0 to dest.count - 1 do begin
tidftp1.get(dest[i], "c:\temp"+dest[i], true);
tidftp1.delete(dest[i]); // если нужно удаляем
end;
tidftp1.disconnect;


ошибки здесь не проверяются.
метод Get не поддерживает докачку

Gets a list of files and directories on the FTP server.

procedure List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean);

Parameters

ADest: TStrings

List for files and directories in the current directory.

const ASpecifier: string = ""

File mask for the listing. Default value is "".

const ADetails: boolean = true

Include file details. Default value is True.

Description

List is a procedure used to request a list of files or directories in the current directory on the FTP server.

ADest is the TStringList used to store the information requested.

ASpecifier is a String that contains a mask indicating the files and/or directories to be included in the listing. ASpecifier can contain common wildcard characters like "*" and "?". Some useful masks include:

*.* - All files in the current directory.
* - All directory entries in the current directory.
*. - All files regardless of extension in the current directory.
A??.txt - All text files that have a 3-character name starting with "A".


Retrieves a file using the FTP protocol.


procedure Get(const ASourceFile: string; ADest: TStream); overload;
procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean); overload;

Parameters

const ASourceFile: string

File name on the FTP server.


const ADestFile: string

File name and optional path on the local machine.


const ACanOverwrite: boolean = false

File can overwrite an existing file of the same name. Default value is False.


 
yastal   (2002-01-26 03:09) [7]

У меня получилось такprocedure TForm1.Button4Click(Sender: TObject);
//действие на кнопку " загрузить все"
var
RmteFile,
LocFile: String;
I: Integer;
begin

for I := 0 to (NMFTP1.FTPDirectoryList.name.Count - 1) do
with NMFTP1.FTPDirectoryList do
begin
RmteFile := name[I];
LocFile := ("d:/alex/download/local/")+name[I];//куда качать
NMFTP1.Download(RmteFile, LocFile)
end;

end;
Но нужно качать по маске,придется использовать компонент indy.
А если кто знает как это делать в FastNet, то подскажите...


 
perov   (2002-01-26 05:09) [8]

тогда тебе нужно определить, уловлетворяет ли name[i] определенной маске.


 
yastal   (2002-01-26 06:50) [9]

Но как???
Да и в предложенном тобой примере на Indy я пробовал,
но прога ругается на Obstract error,почему-то ей не нравится

dest := TString.Create;

И с чем едят этот Create я не знаю :( просто тупик какой-то.



 
perov   (2002-01-26 07:07) [10]

писать нечто типа парсера (посмотри исходники grep, насчет исходников в Delphi не знаю, но с Borland Pascal 7.0 исходник grep вроде бы шел или посмотри в поставке Borland C/C++/Bilder)

Попробуй dest:=TStringList.Create


 
yastal   (2002-01-26 15:42) [11]

А вот за это спасибо :)
В хелпе так и сказано. Все получилось


 
VS2001   (2002-03-31 20:02) [12]

yastal

Предложенный ниже пример у меня не работает.

Выдает ошибку :

Acess violation at adrees 00446dc6 in module "....". Read of adress FFFFFFFF.

Ошибка в строке

for I := 0 to (NMFTP1.FTPDirectoryList.name.Count - 1) do

Что можете посоветовать или кто-нибудь знает как это исправить ???


 
VS2001   (2002-04-05 18:07) [13]

Смотрю так никто и реализовал процесс закачки (Download) файлов
с использованием NMFTP.


 
gsa   (2002-05-29 17:10) [14]


FNameList := TStringList.Create;
FNameList := NMFTP.FTPDirectoryList.Name;
for Q := 0 to FNameList.Count - 1 do
begin
if ((FNameList[Q] <> ".") and (FNameList[Q] <> "..")) then
begin
NMFTP.Download(FNameList[Q], LocalDir + FNameList[Q]);
end;
Это работает.


 
gsa   (2002-05-29 17:11) [15]


FNameList := TStringList.Create;
FNameList := NMFTP.FTPDirectoryList.Name;
for Q := 0 to FNameList.Count - 1 do
begin
if ((FNameList[Q] <> ".") and (FNameList[Q] <> "..")) then
begin
NMFTP.Download(FNameList[Q], LocalDir + FNameList[Q]);
end;
Это работает.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
8-24131
новенький в Делфи
2002-04-01 02:33
2002.08.08
DelphiX


8-24130
Mixan
2002-03-30 13:52
2002.08.08
Как сделать бегущий вверх текст (титры) на фоне картинки?


3-23885
First_May
2002-07-16 10:11
2002.08.08
Прерывание запроса


1-23967
Kurt
2002-07-25 10:57
2002.08.08
Главная форма приложения! Как ее менять? Плиз, помогите!


3-23856
ПИТОН
2002-07-17 08:54
2002.08.08
Остатки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский