AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.01.2007, 10:15   #1  
balashov is offline
balashov
Участник
Аватар для balashov
 
78 / 10 (1) +
Регистрация: 01.09.2005
Извеняюсь если что, но через поиск ничего не нашел.
Может быть есть какие нибуть поделки из mibuso.com или библиотеки позволяющие выкладывать на фтп сервер. Работать с командной строкой не очень хочеться.
Старый 15.01.2007, 11:57   #2  
artkashin is offline
artkashin
Участник
MCBMSS
 
519 / 18 (2) ++
Регистрация: 06.12.2006
Цитата:
Сообщение от balashov Посмотреть сообщение
Извеняюсь если что, но через поиск ничего не нашел.
Может быть есть какие нибуть поделки из mibuso.com или библиотеки позволяющие выкладывать на фтп сервер. Работать с командной строкой не очень хочеться.
Скорее всего - нет. И действительно прийдется работать с командной строкой. Хотя если так не нравится командная строка, используй vbs-скрипты, и ftp.exe
Старый 15.01.2007, 12:08   #3  
balashov is offline
balashov
Участник
Аватар для balashov
 
78 / 10 (1) +
Регистрация: 01.09.2005
Цитата:
Сообщение от Kashin Посмотреть сообщение
Цитата:
Сообщение от balashov Посмотреть сообщение
Извеняюсь если что, но через поиск ничего не нашел.
Может быть есть какие нибуть поделки из mibuso.com или библиотеки позволяющие выкладывать на фтп сервер. Работать с командной строкой не очень хочеться.
Скорее всего - нет. И действительно прийдется работать с командной строкой. Хотя если так не нравится командная строка, используй vbs-скрипты, и ftp.exe
Спасибо. Да я так и подозревал, что проше заморочиться на командную строку.
Вот нашел попроше утилитку чем ftp.exe.
Старый 16.01.2007, 13:15   #4  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Исходник взят из программы API-Guide 3.7

Код:
Const FTP_TRANSFER_TYPE_UNKNOWN = &H0
Const FTP_TRANSFER_TYPE_ASCII = &H1
Const FTP_TRANSFER_TYPE_BINARY = &H2
Const INTERNET_DEFAULT_FTP_PORT = 21			   ' default for FTP servers
Const INTERNET_SERVICE_FTP = 1
Const INTERNET_FLAG_PASSIVE = &H8000000			' used for FTP connections
Const INTERNET_OPEN_TYPE_PRECONFIG = 0					' use registry configuration
Const INTERNET_OPEN_TYPE_DIRECT = 1						' direct to net
Const INTERNET_OPEN_TYPE_PROXY = 3						 ' via named proxy
Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4   ' prevent using java/script/INS
Const MAX_PATH = 260
Private Type FILETIME
	dwLowDateTime As Long
	dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
	dwFileAttributes As Long
	ftCreationTime As FILETIME
	ftLastAccessTime As FILETIME
	ftLastWriteTime As FILETIME
	nFileSizeHigh As Long
	nFileSizeLow As Long
	dwReserved0 As Long
	dwReserved1 As Long
	cFileName As String * MAX_PATH
	cAlternate As String * 14
End Type
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
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 lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Private Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszCurrentDirectory As String, lpdwCurrentDirectory As Long) As Long
Private Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Private Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Private Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, ByVal lpszFileName As String) As Boolean
Private Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" (ByVal hFtpSession As Long, ByVal lpszExisting As String, ByVal lpszNew As String) As Boolean
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hConnect As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByRef dwContext As Long) As Boolean
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
Private Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" (lpdwError As Long, ByVal lpszBuffer As String, lpdwBufferLength As Long) As Boolean
Private Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long
Private Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long
Const PassiveConnection As Boolean = True
Private Sub Form_Load()
	'KPD-Team 2000
	'URL: http://www.allapi.net
	'E-Mail: KPDTeam@allapi.net
	Dim hConnection As Long, hOpen As Long, sOrgPath  As String
	'open an internet connection
	hOpen = InternetOpen("API-Guide sample program", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
	'connect to the FTP server
	hConnection = InternetConnect(hOpen, "your ftp server", INTERNET_DEFAULT_FTP_PORT, "your login", "your password", INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)
	'create a buffer to store the original directory
	sOrgPath = String(MAX_PATH, 0)
	'get the directory
	FtpGetCurrentDirectory hConnection, sOrgPath, Len(sOrgPath)
	'create a new directory 'testing'
	FtpCreateDirectory hConnection, "testing"
	'set the current directory to 'root/testing'
	FtpSetCurrentDirectory hConnection, "testing"
	'upload the file 'test.htm'
	FtpPutFile hConnection, "C:\test.htm", "test.htm", FTP_TRANSFER_TYPE_UNKNOWN, 0
	'rename 'test.htm' to 'apiguide.htm'
	FtpRenameFile hConnection, "test.htm", "apiguide.htm"
	'enumerate the file list from the current directory ('root/testing')
	EnumFiles hConnection
	'retrieve the file from the FTP server
	FtpGetFile hConnection, "apiguide.htm", "c:\apiguide.htm", False, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0
	'delete the file from the FTP server
	FtpDeleteFile hConnection, "apiguide.htm"
	'set the current directory back to the root
	FtpSetCurrentDirectory hConnection, sOrgPath
	'remove the direcrtory 'testing'
	FtpRemoveDirectory hConnection, "testing"
	'close the FTP connection
	InternetCloseHandle hConnection
	'close the internet connection
	InternetCloseHandle hOpen
End Sub
Public Sub EnumFiles(hConnection As Long)
	Dim pData As WIN32_FIND_DATA, hFind As Long, lRet As Long
	'set the graphics mode to persistent
	Me.AutoRedraw = True
	'create a buffer
	pData.cFileName = String(MAX_PATH, 0)
	'find the first file
	hFind = FtpFindFirstFile(hConnection, "*.*", pData, 0, 0)
	'if there's no file, then exit sub
	If hFind = 0 Then Exit Sub
	'show the filename
	Me.Print Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)
	Do
		'create a buffer
		pData.cFileName = String(MAX_PATH, 0)
		'find the next file
		lRet = InternetFindNextFile(hFind, pData)
		'if there's no next file, exit do
		If lRet = 0 Then Exit Do
		'show the filename
		Me.Print Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)
	Loop
	'close the search handle
	InternetCloseHandle hFind
End Sub
Sub ShowError()
	Dim lErr As Long, sErr As String, lenBuf As Long
	'get the required buffer size
	InternetGetLastResponseInfo lErr, sErr, lenBuf
	'create a buffer
	sErr = String(lenBuf, 0)
	'retrieve the last respons info
	InternetGetLastResponseInfo lErr, sErr, lenBuf
	'show the last response info
	MsgBox "Error " + CStr(lErr) + ": " + sErr, vbOKOnly + vbCritical
End Sub
Сорри за форматирование!

Это запихивается в OCX и каждая из функция декларируется как внешняя, чтобы были видны из Нава!Похожая поделка используется у меня на фирме для работы с NCTS (у них поднят ftp-сервер)
Старый 21.01.2007, 00:41   #5  
balashov is offline
balashov
Участник
Аватар для balashov
 
78 / 10 (1) +
Регистрация: 01.09.2005
Цитата:
Сообщение от InTacto Посмотреть сообщение
Исходник взят из программы API-Guide 3.7
Вот тут нашел программку http://www.ruloads.com/dev/compon/10211dload.html
"FTP DLL 2.3" там класная библиотечка регистрируеться как Automation в NV, для работы с ФТП есть все начиная от пингования удаленного хоста. + документация по событиям.
Старый 21.01.2007, 00:50   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от InTacto Посмотреть сообщение
Сорри за форматирование!
Используйте тег [ cal ] (нужно убрать пробелы)
См. Теги [Xpp] и [CAL] позволяют публиковать код Axapta и Navision

Я вставил этот тег в ваше сообщение.
__________________
полезное на axForum, github, vk, coub.
Старый 22.01.2007, 14:47   #7  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от mazzy Посмотреть сообщение
Цитата:
Сообщение от InTacto Посмотреть сообщение
Сорри за форматирование!
Используйте тег [ cal ] (нужно убрать пробелы)
См. Теги [Xpp] и [CAL] позволяют публиковать код Axapta и Navision

Я вставил этот тег в ваше сообщение.
Это конечно круто, но это код VB!
Старый 22.01.2007, 18:08   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от InTacto Посмотреть сообщение
Это конечно круто, но это код VB!
А я думал, вам понравится...
Хорошо, используйте тег [ code ] (нужно убрать пробелы)

Я заменил тег в вашем сообщении.
__________________
полезное на axForum, github, vk, coub.
Старый 23.01.2007, 17:23   #9  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Понравилось! Извинте, если обидел!
Тег однозначно нужный! Впредь постарюсь соблюдать правила!
Старый 23.01.2007, 18:04   #10  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
а если Ftp требует аутентификации, то как узнать пароль?
Старый 24.01.2007, 13:07   #11  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от grif Посмотреть сообщение
а если Ftp требует аутентификации, то как узнать пароль?
Вопрос на 10 балов! Узнать у владельцев этого FTP! По другому ни как!
Они для этого и поролятся, чтобы никто не знал пароля!
Старый 24.01.2007, 13:16   #12  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
а если из навижена, то как узнать?
Старый 24.01.2007, 13:41   #13  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Не надо ли подключить для этого к Navision библиотеку ahesp.dll, а то ведь блокированный субпакет в пакете FTP не позволяет извлечь данные аутентификации из-за ESP заголовка?
Старый 25.01.2007, 13:59   #14  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Если FTP-сервер не поддерживает анонимных пользователей, то нужно зарание подумать об логине и пароле (сделать формочку в Наве) и затем подставить их при обращении к FTP. Рекомендую по-лучше ознакомиться с программой, указанной balashov, т.к. в ней все это реализованно в демо-примере.
Старый 25.01.2007, 14:07   #15  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Не совсем понятно как быть с блокированным субпакетом
Старый 25.01.2007, 17:56   #16  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
А вы проверили, что он блокирует? Я вот, когда писал интерфейс FTP для Нава не знал ни про какие субпакеты, и представьте все работает и не блочит - аутентификации проходит(в темную, пользватель тока жмет отправить/получить)!
Старый 25.01.2007, 18:17   #17  
balashov is offline
balashov
Участник
Аватар для balashov
 
78 / 10 (1) +
Регистрация: 01.09.2005
Цитата:
Сообщение от InTacto Посмотреть сообщение
Если FTP-сервер не поддерживает анонимных пользователей, то нужно зарание подумать об логине и пароле (сделать формочку в Наве) и затем подставить их при обращении к FTP. Рекомендую по-лучше ознакомиться с программой, указанной balashov, т.к. в ней все это реализованно в демо-примере.
Кстати эта программа указанная в ссылке не безплатная (40$), но очень функциональная. Можно очень много похожих бесплатных компонент ActiveX найти, там есть похожие библиотеки и для FTP и для других протоколов POP и т.д.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:44.