Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Копирование файла на ftp сервер


Автор: pavelv 27.6.2006, 12:51
Хочу скопировать файл с локальной машины на ftp сервер. Пробовал двумя методами:
через 
1. Createprocess(nil,PChar('xcopy.exe C:\Untitled.jpg ftp://10.11.11.1/incoming'),nil,nil,false,Create_default_error_mode,nil,nil,si,p);
2.
Код

procedure TForm1.Button2Click(Sender: TObject);
var
ShFile : TShFileOpStruct;
begin
 ShFile.Wnd := Handle;
 ShFile.wFunc := FO_COPY;
 SHFile.pFrom := PChar('c:\test1.rar');
 ShFile.pTo := PChar('ftp://10.11.11.1/incoming/');
 ShFile.fFlags := FOF_ALLOWUNDO;
 if ShFileOperation(ShFile) <> 0 then
 MessageDlg('Error copying files',mtError,[mbYes],0);
end;

В 1ом случае проверил через командуную строку, copy не понимает что такое ftp. - "Неопознаное устройство ftp"
Во 2ом случае вылетает по ошибке "Синтаксическая ошибка в имени файла, имени папки или метки тома". 
Кто-нибудь может помочь в решении?   

Автор: comtat 27.6.2006, 14:16
почитай вот http://forum.chertenok.ru/viewtopic.php?t=2968&view=next&sid=f03911d8a682d88504b591f389ba5e47
Тут все обьеснено 

Вот пример
Код
Не забудьте добавить ShellAPI в uses.

procedure FileOperation (const source, dest: string; op, flags: Integer); 
var shf: TSHFileOpStruct; 
      s1, s2: string; 
begin 
 FillChar (shf, SizeOf (shf), #0); 
 s1:= source + #0#0; 
 s2:= dest + #0#0; 
 shf.Wnd:=     0; 
 shf.wFunc:=  op; 
 shf.pFrom:=  PCHAR (s1); 
 shf.pTo:=    PCHAR (s2); 
 shf.fFlags:= flags; 
 SHFileOperation (shf); 
end; 

//А вот некоторые примеры использования этой функции:

//Отправляем файл в корзину
FileOperation (filename, '', FO_DELETE, FOF_ALLOWUNDO + FOF_NOCONFIRMATION); 

//Перемещаем файл в другую директорию
FileOperation (sourcefile, destination, FO_MOVE,  FOF_ALLOWUNDO + FOF_NOCONFIRMATION); 

//Копируем файл в другую директорию
FileOperation (sourcefile, destination, FO_COPY, FOF_ALLOWUNDO + FOF_NOCONFIRMATION);
 

Автор: pavelv 3.7.2006, 04:43
Прошу прощения за медлительность, не было возможности подойти к компу. 
Ссылка у меня не работает. Что касается ShellAPI, то я использовал его в процедуре 
TForm1.Button2Click(Sender: TObject), он копирует файл внутри локальных дисков, внутри сетевых дисков. НО к сожалению там нет возможности скопировать файл на ftp сервер, вопрос в этом и заключался. Насколько я понял представленный тобой кода, там решения нет. Возможно оно есть по ссылке, но как сказал выше она не пашет smile. 

Автор: Yanis 3.7.2006, 07:21
pavelv
http://forum.vingrad.ru/index.php?showtopic=32704&view=all 

Автор: pavelv 3.7.2006, 12:34
Ок спасибо, проблема решена с помощью winInet; 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)