Всегда новое имя у загруженного на FTP файла, как? - VB
Формулировка задачи:
Добрый день, господа программисты!
Создал проект, функцией которого является загрузка файла на FTP
сервер, т.е. FTP-client. Целью проекта является загрузка файла с постоянно изменяющимися данными (1.txt). Проблема такая:
Как Вы видите из строки:
имя файла на сервере будет 1.txt, и при последующих запусках,
клиента имя файла 1.txt меняться не будет, т.е. предыдущий файл
будет перезаписан.
Вопрос:
Как сделать чтобы при запуске FTP-клиента файл сохранялся в
формате:
год-месяц-дата-часов-минут-секунд.txt
времени запуска? Т.е. имя файла никогда не повторялось.
И как сохранить файл не в корень каталога FTP, как здесь:
а в подкаталоге, пример:
когда пишу адрес ftp.XXXX.XXX/1 или ftp.XXXX.XXX/1/ - файл не отправляется вообще.
Спасибо за внимание, очень надеюсь на вашу помощь.
Листинг программы
- Option Explicit
- Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal nAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal nFlags As Long) As Long
- Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal nService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
- Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
- Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
- Dim rc&
- Dim rs&
- Private Sub Command1_Click()
- rc& = InternetOpen("", 0, vbNullString, vbNullString, 0)
- rs& = InternetConnect(rc&, "ftp.XXXX.XXX", "21", "XXXXX", "XXXXX", 1, 0, 0)
- If FtpPutFile(rs&, "C:\1.txt", "1.txt", 1, 0) = False Then MsgBox "Ошибка передачи файла!", vbExclamation
- Call InternetCloseHandle(rs&)
- Call InternetCloseHandle(rc&)
- End Sub
Листинг программы
- If FtpPutFile(rs&, "C:\1.txt", "1.txt", 1, 0) = False Then MsgBox "Ошибка передачи файла!", vbExclamation
Листинг программы
- rs& = InternetConnect(rc&, "ftp.XXXX.XXX", "21", "XXXXX", "XXXXX", 1, 0, 0)
Листинг программы
- rs& = InternetConnect(rc&, "ftp.XXXX.XXX/1", "21", "XXXXX", "XXXXX", 1, 0, 0)
Решение задачи: «Всегда новое имя у загруженного на FTP файла, как?»
textual
Листинг программы
- Sub FTP_FileCopy(FileLocal As String, FileRemote As String)
- On Error Resume Next
- Dim hConnection As Long, hOpen As Long, sOrgPath As String
- 'считывание настроек FTP
- Call FTP_ConnectParam
- If FTP_SERVER = "" Or FTP_LOGIN = "" Or FTP_PASS = "" Then Exit Sub
- lpszLocalFile = FileLocal 'локальный файл, который необходимо закачать
- lpszRemoteFile = FileRemote 'имя, под которым сохраним закачиваемый файл
- 'Открываем соединение с интернетом
- hOpen = InternetOpen("sample program", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
- 'Соединяемся с FTP сервером
- hConnection = InternetConnect(hOpen, FTPServer, INTERNET_DEFAULT_FTP_PORT, FTPLogin, FTPPassword, INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)
- 'Создаем буфер для запоминания оригинальной текущей директории
- sOrgPath = String(MAX_PATH, 0)
- 'Получаем текущую директорию
- Call FtpGetCurrentDirectory(hConnection, sOrgPath, Len(sOrgPath))
- 'Меняем текущую директорию на root/%lpszRemoteDirectory%
- Call FtpSetCurrentDirectory(hConnection, lpszRemoteDirectory)
- 'Заливаем файл lpszLocalFile
- lblCopy.Visible = True
- Me.Refresh
- DoEvents
- Call FtpPutFile(hConnection, lpszLocalFile, lpszRemoteFile, FTP_TRANSFER_TYPE_UNKNOWN, 0)
- lblCopy.Visible = False
- 'Восстанавливаем оригинальную (сохраненную ранее) текущую директорию
- Call FtpSetCurrentDirectory(hConnection, sOrgPath)
- 'Закрываем соединение с FTP сервером
- Call InternetCloseHandle(hConnection)
- 'Закрываем соединение с интернетом
- Call InternetCloseHandle(hOpen)
- 'обновляем список файлов
- Call FTP_CreateFileList(lpszRemoteDirectory)
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д