urrya
Новичок
- Сообщения
- 159
- Репутация
- 1
Доброго времени суток дамы и гос-да.
Написал код передачи файлов по FTP на сервер.
Но возникла проблема в целостности файлов. Короче говоря на сервер приходят "битые" файлы.
Нормальные клиенты FTP как то проверяют и контролируют
передаваемые файлы. Скорее всего функцией -
но как эту функцию использовать я никак не могу понять :stars:
пример моего кода для отправки файлов -
Написал код передачи файлов по FTP на сервер.
Но возникла проблема в целостности файлов. Короче говоря на сервер приходят "битые" файлы.
Нормальные клиенты FTP как то проверяют и контролируют
передаваемые файлы. Скорее всего функцией -
Код:
_FTP_SetStatusCallback()
но как эту функцию использовать я никак не могу понять :stars:
пример моего кода для отправки файлов -
Код:
#include <Array.au3>
#include <FTPEx.au3>
Global $put
Local $_DirGet, $chh = 0, $ich = 0, $bly = 0
Global $dir_name = _NowCalc()
$dir_name = StringTrimRight($dir_name, 9)
$dir_name = StringRegExpReplace($dir_name, "[/\;:]", '.', 0)
Local $fFoldLocal_dir_name = @ScriptDir & '\pic.rar'
Local $filerar = '/pic.rar'
Global $server = IniRead(@ScriptDir & "\ini.ini", 'FTP', 'FTP', 'faq')
Global $pass = IniRead(@ScriptDir & "\ini.ini", 'FTP', 'FTPPassword', 'faq')
Global $username = IniRead(@ScriptDir & "\ini.ini", 'FTP', 'FTPLogin', 'faq')
Local $fFoldServer = IniRead(@ScriptDir & "\ini.ini", 'FTP', 'fFolder', 'faq')
Local $fFoldServer_dir_name = '/' & $fFoldServer & '/' & $dir_name
Local $Open = _FTP_Open('ftp')
Local $Conn = _FTP_Connect($Open, $server, $username, $pass, 1)
_FTP_DirSetCurrent($Conn, '/' & $fFoldServer) ; вход в папку
Local $_Array = _FTP_ListToArray($Conn, 1, $INTERNET_FLAG_RELOAD)
;_ArrayDisplay($_Array)
If FileExists($fFoldLocal_dir_name) Then
Do
If $_Array[0] = 0 Then
$_DirGet = _FTP_DirGetCurrent($Conn) ; Возвращает текущий каталог на FTP сервере.
If $_DirGet == '/' & $fFoldServer Then _FTP_DirCreate($Conn, $fFoldServer_dir_name) ; создаёт каталог
_FTP_DirSetCurrent($Conn, $dir_name) ; вход в папку
$put = _FTP_FilePut($Conn, $fFoldLocal_dir_name, $fFoldServer_dir_name & $filerar, $INTERNET_FLAG_TRANSFER_BINARY&$INTERNET_FLAG_RELOAD) ; загрузка файла на FTP Server
Else
$chh = $_Array[0]
If $_Array[$chh] = $dir_name Then ; если последняя папка сегодняшней даты
_FTP_DirSetCurrent($Conn, $dir_name) ; вход в папку
$put = _FTP_FilePut($Conn, $fFoldLocal_dir_name, $fFoldServer_dir_name & $filerar, $INTERNET_FLAG_TRANSFER_BINARY&$INTERNET_FLAG_RELOAD) ; загрузка файла на FTP Server
Else ; иначе создаёт каталог
_FTP_DirCreate($Conn, $fFoldServer_dir_name) ; создаёт каталог
_FTP_DirSetCurrent($Conn, $dir_name) ; вход в папку
$put = _FTP_FilePut($Conn, $fFoldLocal_dir_name, $fFoldServer_dir_name & $filerar, $INTERNET_FLAG_TRANSFER_BINARY&$INTERNET_FLAG_RELOAD) ; загрузка файла на FTP Server
EndIf
EndIf
$_Arrayf = _FTP_ListToArray($Conn, 2, $INTERNET_FLAG_RELOAD)
If $_Arrayf <> 0 Then
Local $2Conn = _FTP_Close($Conn)
Local $2Open = _FTP_Close($Open)
$ich = 10
;FileDelete(@ScriptDir & '\pic.rar')
Else
$ich += 1
EndIf
Until $ich = 10
EndIf
ConsoleWrite('_FTP_Open - ' & $Open & @CRLF)
ConsoleWrite('_FTP_Connect - ' & $Conn & @CRLF)
ConsoleWrite('_FTP_FilePut - ' & $put & @CRLF)
ConsoleWrite('_FTP_Connect - ' & $2Conn & @CRLF)
ConsoleWrite('_FTP_FilePut - ' & $2Open & @CRLF)