[ smal @ 01.11.2009. 10:39 ] @
*Ova poruka je odgovor na temu postavljenu na Access forumu ftp konekcija i progress barkontrola

Uz poruku je AutoIt skript primer za download fajla sa FTP servera, sa progresbarom.

Radi jednostavnu stvar:
Downloaduje zipovanu DBF tabelu sa FTP servera u određeni folder i raspakuje je, a pritom obaveštava korisnika o progresu (na osnovu tajmera) i ishodu operacije... Naravno, imena fajlova, putanje, user i pass za FTP server itd treba promeniti po potrebi.


Da bi ga kompajlirao, potreban je AutoIt i Zip podrška Zip.au3 tj. addon koga moraš snimiti u \AutoIt3\Include folder pre kompajliranja.


Moram da ukažem na jedan potencijalni problemčić - Pri raspakivanju arhive, skript svaki put kreira i ostavi privremeni folder sa drugačijim nazivom u TEMP-u aktivnog korisnika, tako da mi je najjednostavnije bilo da nakon završetka operacije obrišem sve zaostale postojeće privremene foldere i fajlove, bez obzira koja aplikacija ih je kreirala. To nije dovelo ni do kakvih loših posledica do sada, a svakodnevno radi na 20-ak računara.
Čisto to napominjem za slučaj da kod tebe postoji nekakva specifična situacija...



[Ovu poruku je menjao smal dana 01.11.2009. u 12:01 GMT+1]
[ banera30 @ 01.11.2009. 21:25 ] @
Hvala na programu. Uradio sam kako si napisao ali se kod mene nista ne desava. Kada pokrenem program dobijem formu sa status barom koji nista ne ucitava. Preko filezile vidim da mi je ftp server dostupan.
Koliko sam razumeo linije skripte broj 56, 57,58 i 60 su ukoliko hocu backup fajla i raspakivanje, ukoliko necu iskljucim ih iz koda sa znakom ;.
Deo kojim se nalaze preuzimanje fajla sa servera je linija 75. Nisam siguran da sam je korektno ispravio pa ti salje

sFileURL = "ftp://[email protected]:lozinka@ipadresa/nazivfajla.txt"

Nisu mi jasne dve stvari kod mene user name ima znak @ i deo username je i .rs. Kada kucam . on mi nudi neke metode u padajucoj listi. Isto mi nije jasno da li na mestu ip adrese mora ip adresa brojcano ili moze recimo ftp.ime.rs.

Uglavnom nista se ne desava

PS: koliko sam razumeo kod on resava skidanje sa servera da li mogu da se ubace neke linije za snimanje na server

Hvala ti puno na izdvojenom vremenu
Pozdrav
[ smal @ 01.11.2009. 23:18 ] @
Ne mora da stoji IP adresa u logon delu skripta, može i ime domena.
Za ftp username sa karakterom @ stvarno ne znam, jer nemam kako da proverim, ali mislim da ne bi smelo da bude problema.
Ako ti ne treba UnZipovanje, backup i ostalo, slobodno stavi komentar ; na početak reda, a takođe i na #include <Zip.au3> pri vrhu skripta.
Probao sam malopre DL čistog txt fajla, bez arhiviranja, i sve radi.

Meni liči da problem može da bude do logona, ili da imaš neki firewall koji sprečava program da uspostavi konekciju sa serverom...

Upload fajla naravno takođe može da se namesti, ali to ću da pogledam sutra, čim uhvatim malo vremena.

Poz.
[ banera30 @ 02.11.2009. 20:24 ] @
Ja bih rekao da nisam bas najbolje razumeo kako postaviti parametre za ftp i putanju fajla. Ako stignes pogledaj taj deo u poslednjoj poruci pa prokomentarisi

Pozdrav
[ smal @ 03.11.2009. 17:06 ] @
Postoji putanja do fajla na FTP serveru, na pr:
Code:
$sFileURL = "ftp://user:[email protected]/Test.txt"

koga skidaš na lokalni disk
Code:
$sFileDest = "D:\Temp\Test.txt" 


Dakle, za obe lokacije moraš da navedeš putanju i naziv fajla. Ako ti je FTP server na Linuxu, vodi računa o malim i velikim slovima, jer je Case senzitivan. Ne znam šta bi ostalo moglo da bude sporno...

Što su UpLoada tiče, situacija je složenija nego što sam u prvi mah pomislio. Nažalost, ne postoji funkcija InetPut sa progress barom, koja je slična InetGet, iskorištenoj u Downloader primeru, tako da nisam uspeo da napravim odgovarajući primer za UL.

Ipak, ukoliko ti odgovara varijanta bez progressbara, evo ga najjednostavniji skriptić koji samo obavesti korisnika o završenom uploadu:

Code:

#Include <FTP.au3>

Global Const $Host = 'host'
Global Const $Login = 'user'
Global Const $Password = 'pass'

_FTP_Startup()
$hFtp = _FTP_Open('MyFtp')
$hSession = _FTP_Connect($hFtp, $Host, $Login, $Password)
_FTP_PutFile($hSession, 'D:\Temp\Test.txt', '/Test.txt')
_FTP_Disconnect($hSession)
_FTP_Close($hFtp)
_FTP_Shutdown()
$m=MsgBox(0,"Iskopirano","Fajl je iskopiran na server")


U \AutoIt3\Include\ dodaj FTP.au3 biblioteku.

Inače, naleteo sam na već odlično urađen program, sa sve Source kodom na FTP Uploader, pa sam odustao od daljnjeg mozganja :)

Vredi pogledati.
[ banera30 @ 04.11.2009. 19:15 ] @
Hvala ti puno na pomoci. Napravicu neku odgovarajucu kombinaciju

Pozdrav