Форум: "Сети";
Текущий архив: 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.008 c