Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.07.2010, 16:15
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка Как дописать данные к существующему файлу на ФТП

Приветсвую, ребята помогите доделать код ниже для того, чтобы мне не приходилось создавать новые файлы, а дописывать данные к существующему:

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<font color="#000000"><b>uses</b></font>
WinInet<font color="#000066">;</font>
  
<font color="#000000"><b>function</b></font> Upload<font color="#000066">(</font>Serv<font color="#000066">,</font> Login<font color="#000066">,</font> Pas<font color="#000066">,</font> InFN<font color="#000066">,</font> <font color="#808080"><i>{OutFN, }</i></font> Folder<font color="#000066">:</font> <font color="#000066"><b>string</b></font><font color="#000066">)</font><font color="#000066">:</font> <font color="#000066"><b>Boolean</b></font><font color="#000066">;</font>
<font color="#000000"><b>var</b></font>
  InetHandle<font color="#000066">,</font> FtpHandle<font color="#000066">:</font> HInternet<font color="#000066">;</font>
<font color="#000000"><b>begin</b></font>
  RESULT <font color="#000066">:</font><font color="#000066">=</font> <font color="#000000"><b>FALSE</b></font><font color="#000066">;</font>
  InetHandle <font color="#000066">:</font><font color="#000066">=</font> InternetOpen<font color="#000066">(</font><font color="#000066"><b>PChar</b></font><font color="#000066">(</font><font color="#FF0000">'FTP'</font><font color="#000066">)</font><font color="#000066">,</font> <font color="#808080"><i>//nil или Microsoft Internet Explorer</i></font>
    <font color="#0000FF">0</font><font color="#000066">,</font> <font color="#808080"><i>//INTERNET_OPEN_TYPE_PRECONFIG !!!!! INTERNET_OPEN_TYPE_DIRECT</i></font>
    <font color="#000000"><b>nil</b></font><font color="#000066">,</font> <font color="#000000"><b>nil</b></font><font color="#000066">,</font> <font color="#0000FF">0</font><font color="#000066">)</font><font color="#000066">;</font>
  FtpHandle <font color="#000066">:</font><font color="#000066">=</font> InternetConnect<font color="#000066">(</font>InetHandle<font color="#000066">,</font> <font color="#000066"><b>PChar</b></font><font color="#000066">(</font>Serv<font color="#000066">)</font><font color="#000066">,</font> <font color="#0000FF">21</font><font color="#000066">,</font> <font color="#808080"><i>//INTERNET_DEFAULT_FTP_PORT</i></font>
    <font color="#000066"><b>PChar</b></font><font color="#000066">(</font>Login<font color="#000066">)</font><font color="#000066">,</font> <font color="#000066"><b>PChar</b></font><font color="#000066">(</font>Pas<font color="#000066">)</font><font color="#000066">,</font> INTERNET_SERVICE_FTP<font color="#000066">,</font> <font color="#0000FF">0</font><font color="#000066">,</font> <font color="#808080"><i>//INTERNET_FLAG_PASSIVE,</i></font>
    <font color="#0000FF">255</font><font color="#000066">)</font><font color="#000066">;</font> <font color="#808080"><i>//0</i></font>
  <font color="#000066">Sleep</font><font color="#000066">(</font><font color="#0000FF">100</font><font color="#000066">)</font><font color="#000066">;</font>
  <font color="#000000"><b>if</b></font> FtpHandle <> <font color="#000000"><b>nil</b></font> <font color="#000000"><b>then</b></font>
  <font color="#000000"><b>begin</b></font>
<font color="#808080"><i>//</i></font>
    <font color="#000000"><b>if</b></font> <font color="#000000"><b>not</b></font> FtpSetCurrentDirectory<font color="#000066">(</font>FtpHandle<font color="#000066">,</font> <font color="#000066"><b>PChar</b></font><font color="#000066">(</font>Folder<font color="#000066">)</font><font color="#000066">)</font> <font color="#000000"><b>then</b></font>
    <font color="#000000"><b>begin</b></font>
      <font color="#000000"><b>if</b></font> FtpCreateDirectory<font color="#000066">(</font>FtpHandle<font color="#000066">,</font> <font color="#000066"><b>PChar</b></font><font color="#000066">(</font>Folder<font color="#000066">)</font><font color="#000066">)</font> <font color="#000000"><b>then</b></font>
        FtpSetCurrentDirectory<font color="#000066">(</font>FtpHandle<font color="#000066">,</font> <font color="#000066"><b>PChar</b></font><font color="#000066">(</font>Folder<font color="#000066">)</font><font color="#000066">)</font><font color="#000066">;</font>
    <font color="#000000"><b>end</b></font><font color="#000066">;</font>
<font color="#808080"><i>//</i></font>
    <font color="#000000"><b>try</b></font>
      FtpPutFile<font color="#000066">(</font>FtpHandle<font color="#000066">,</font> <font color="#000066"><b>PChar</b></font><font color="#000066">(</font>InFN<font color="#000066">)</font><font color="#000066">,</font> <font color="#000066"><b>PChar</b></font><font color="#000066">(</font><font color="#808080"><i>{OutFN}</i></font> <font color="#000066">IntToStr</font><font color="#000066">(</font>RandomInteger<font color="#000066">(</font><font color="#0000FF">6</font><font color="#000066">)</font><font color="#000066">)</font> <font color="#000066">+</font> <font color="#FF0000">'_'</font> <font color="#000066">+</font> RandomString<font color="#000066">(</font><font color="#0000FF">6</font><font color="#000066">)</font><font color="#000066">)</font><font color="#000066">,</font> FTP_TRANSFER_TYPE_BINARY<font color="#000066">,</font> <font color="#808080"><i>//FTP_TRANSFER_TYPE_UNKNOWN</i></font>
        <font color="#0000FF">255</font><font color="#000066">)</font><font color="#000066">;</font> <font color="#808080"><i>//0</i></font>
      InternetCloseHandle<font color="#000066">(</font>FtpHandle<font color="#000066">)</font><font color="#000066">;</font>
      RESULT <font color="#000066">:</font><font color="#000066">=</font> <font color="#000000"><b>TRUE</b></font><font color="#000066">;</font>
    <font color="#000000"><b>except</b></font>
    <font color="#000000"><b>end</b></font><font color="#000066">;</font>
  <font color="#000000"><b>end</b></font><font color="#000066">;</font>
  InternetCloseHandle<font color="#000066">(</font>InetHandle<font color="#000066">)</font><font color="#000066">;</font>
<font color="#000000"><b>end</b></font><font color="#000066">;</font>
Ответить с цитированием
  #2  
Старый 01.07.2010, 16:29
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

на сколько я могу судить данная тема уже поднималась: http://www.delphisources.ru/forum/showthread.php?t=6181
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel
Ответить с цитированием
  #3  
Старый 01.07.2010, 16:41
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка

Оно и есть только не на INDY надо, а на WinInet.

Неужели надо скачивать файл, дописывать и выгружать обратно, иначе никак, а если файл много весит ?
Ответить с цитированием
  #4  
Старый 01.07.2010, 17:10
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

нашел в каких-то исходниках такое:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int num = <b>FtpGetRetryCount</b>(hConnect);
int num = <b>FtpGetRetryCount</b>(&getConnection());
if ( g_manager.opt.RetryCount > 0 && num >= g_manager.opt.RetryCount )
return FALSE;
 
<b>FtpSetRetryCount</b>( hConnect,num+1 );
 
if ( !hConnect->ConnectMessageTimeout(MCannotUpload, remoteFile, MRetry))
<b>FtpSetRetryCount</b>(&getConnection(), num+1 );
 
if (!getConnection().ConnectMessageTimeout(MCannotUpload, remoteFile, MRetry))
return FALSE;
 
Reput = TRUE;
 
if ( FtpCmdLineAlive(hConnect) &&
FtpKeepAlive(hConnect) )
if(getConnection().keepAlive())
смысл такой, что надо серверу указать на то, что будем заливать файл дальше и через FtpSetRetryCount установить позицию в конец файла, предварительно посмотрев его размер на сервере Думаю шо как-то так. Только чего-то в WinInet я такое не нашел o_O. Но думаю можно послать команду APPE (APPE <SP> <проход> - Присовокупить передаваемые данные к файлу, указанному в параметре проход) на ДОзапись серверу через FtpCommand
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel

Последний раз редактировалось Marvel, 01.07.2010 в 17:20.
Ответить с цитированием
  #5  
Старый 15.07.2010, 13:15
orionXL orionXL вне форума
Прохожий
 
Регистрация: 15.07.2010
Сообщения: 9
Репутация: 10
По умолчанию А если попробовать хранить файл в БД

А если попробовать хранить файл в БД (поле blob), если есть такая возможность?
__________________
звезда Орион во вселенной
Ответить с цитированием
  #6  
Старый 15.07.2010, 13:49
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Такой возможности нет, но выяснилось что тут надо напрямую плясать с сервером, отсылать ему команды, но я не в курсах как это реализовать, опыта нет. Выдрать инфу из сурсов ИНДИ так же не удалось, так что тема остается открытой.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:00.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025