Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2009, 13:05   #1
dirrer
 
Регистрация: 03.03.2009
Сообщений: 6
По умолчанию копирование обновленного файла с ftp на сервер

Привет!
С помощью idftp реализовал копирование файлов с ftp на сервер.
Вот вопрос, перерыл все, не нашел... Создают файл на складе, он копируется на ftp, потом копируется на сервер в офисе. В какой-то момент файл изменяют на складе (допустим пересканировали с более высоким разрешением) и за тем же именем (имя файла нельзя изменять) копируют на ftp, но компонет idftp не перезаписывает при копировании старый файл на сервере в офисе. Как побороть?

ps. виноват, тема должна быть такой - копирование обновленного файла с ftp на сервер

Последний раз редактировалось dirrer; 16.03.2009 в 16:18. Причина: невнимательность
dirrer вне форума Ответить с цитированием
Старый 16.03.2009, 13:08   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)тема вопросу не соответствует(пропитался модерским духом )
2)а ты пробывал стирать старый файл сначало, а потом грузить новый?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.03.2009, 14:04   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
но компонет idftp не перезаписывает при копировании старый файл на сервере в офисе
Что есть копирование ? в ftp не существует такой комманды.
есть окмманда put, которая берет файл и указанным методом его загружает на FTP сервер. Если у аккаунта, от имени которого выполнено подключение к FTP, есть права на изменение того файла (существующего на сервере), то файл перезапишется без каких- либо проблем и вопросов. НО все это зависит исключительно от настроект FTP сервера. Так что для начала анализируйте ответ от попытки загрузить файл взамен уже существующему или пытайтесь сначала удалить имеющийся файл.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 16.03.2009, 16:16   #4
dirrer
 
Регистрация: 03.03.2009
Сообщений: 6
По умолчанию

Спасибо за ответы, буду пробовать

Последний раз редактировалось dirrer; 16.03.2009 в 16:19.
dirrer вне форума Ответить с цитированием
Старый 16.03.2009, 16:21   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

От теперь вы окончательно всех запутали )
Давайте сначала начнем с задачи:
вам необходимо взять файл с FTP-сервера и скопировать его на локальный компьютер, заменив существующий ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 16.03.2009, 16:26   #6
dirrer
 
Регистрация: 03.03.2009
Сообщений: 6
По умолчанию

Именно так... простите, заработался, и неправильно тему написал
dirrer вне форума Ответить с цитированием
Старый 16.03.2009, 16:31   #7
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Понятно, все будет несколько зависеть от вашей версии Indy, но в версии 10.2.5 (интегрирована с средой D2009) В классе TIdFTP метод GET вот с такой сигнатурой:
Код:
procedure Get(const ASourceFile, ADestFile: string; const ACanOverwrite: boolean = false; AResume: Boolean = false); overload;
Подробно о нем написано в справке:
Цитата:
Declaration
procedure Get(
const ASourceFile: string,
const ADestFile: string,
const ACanOverwrite: boolean = false,
AResume: Boolean = false
); overload;
Parameters
Parameters Description
ASourceFile File name on the FTP server.
ADestFile File name and optional path on the local machine.
ACanOverwrite Overwrite an existing file with the same name.
AResume Partial download can be completed.

Summary
Retrieves a file using the FTP protocol.
Description
Get is an overloaded procedure that allows the FTP client to retrieve a file with the name specified in ASourceFile from the FTP server using the FTP RETR command.
Values retrieved from the server are stored locally in the file name specified in ADestFile.

Get allows continuing a previous partial download or appending data to an existing file on the local file system when AResume is True and CanResume indicates that the FTP server implementation allows the FTP REST command verb.

ACanOverwrite indicates if an existing local file with the name indicated in ADestFile should be overwritten. The local file will be deleted and recreated when ACanOverwrite contains True and AResume contains False. When ACanOverwrite contains False and AResume contains True, the destination file will be opened and positioned to the end of the existing file data before retrieving new data.

An EIdFTPFileAlreadyExists exception will be raised when the destination file in ADestFile already exists, and both ACanOverwrite and AResume contain False.

Internal processing for the Get method will also trigger the OnStatus event handler with the ftpTransfer status value, reads data from the FTP server, and signals the the OnStatus event handler with the ftpReady status value on completion. OnStatus may be triggered with the value ftpAborted if the response code from the FTP server is the numeric values 225 or 226.

During data retrieval, Get calls methods that initialize the DataChannel for the FTP client using the connection type specificed in Passive.

When Passive contains True, the FTP PASV or EPSV commands are used to configure the IP address and Port number for the data channel. When Passive contains False, the FTP PORT or EPRT commands are used to configure the IP address and Port number for the data channel using the value indicated in DataPort, DataPortMin, and DataPortMax. UsingExtDataPort indicates if the FTP EPORT command is required.

The OnDataChannelCreate event handler is signaled prior to opening the data channel connection.

When both AResume and CanResume contain True, the FTP REST command is sent using the existing length of aDestFile as the initial position for the resumed data transfer.

A secure socket transport for the data channel is updated based on values in DataPortProtection and UsingSFTP prior to tranmission of data.

The current value in TransferMode is used to determine if ZLib compression has been applied to data during transmission. When TransferMode contains dmDeflate, the Compressor object instance is used to read compressed data on the data channel socket transport. When TransferMode contains dmStream, data is read from the transport using the IPOHandler for the data channel.

After completion of the retrieval process, Get signals the OnDataChannelDestroy event handler and frees the data channel for the FTP client.

Get also signals the OnAfterGet event handler following completion of the data transfer.

Use Put to transfer data from the FTP client to the FTP server.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 16.03.2009, 16:38   #8
dirrer
 
Регистрация: 03.03.2009
Сообщений: 6
По умолчанию

спасибо, к сожалению использую indy 9
dirrer вне форума Ответить с цитированием
Старый 16.03.2009, 16:42   #9
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Скачал документацию по Indy 9 там этот метод присутствует в таком же виде.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи

Последний раз редактировалось Квэнди; 16.03.2009 в 16:48.
Квэнди вне форума Ответить с цитированием
Старый 16.03.2009, 16:53   #10
dirrer
 
Регистрация: 03.03.2009
Сообщений: 6
По умолчанию

спасибо, буду думать
dirrer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как мне написать FTP сервер Gelios Работа с сетью в Delphi 9 15.03.2009 00:47
Передача файла на FTP Mitron Работа с сетью в Delphi 18 02.12.2008 14:17
Чтобы программа заходила на ftp сервер lexaltd Работа с сетью в Delphi 1 01.08.2008 22:59
загрузить файл на сервер с помощью ftp andrey4623 PHP 3 29.06.2008 20:29
Копирование файлов на FTP Dj_smart Общие вопросы Delphi 2 05.03.2008 09:04