Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

Нужно скачать по 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
1-24005
msalex
2002-07-28 14:05
2002.08.08
Reach Edit: найти положение текстового курсора по положению кур.


1-23984
Sand
2002-07-25 07:15
2002.08.08
Инструментльная панель как в MS Office


7-24240
Евгений!
2002-03-06 19:44
2002.08.08
Как добавить свой пункт в контекстное меню IE и ...


1-24110
nikolo
2002-07-26 13:29
2002.08.08
Как из Delphi приконектиться к MS SQL Server?


1-24091
Nox
2002-07-26 15:07
2002.08.08
<<<Народ, как написать алгоритмы решения следующих задач:>>>