Search  
Thursday, May 24, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Win32 API  Descarcare fisi...
 Descarcare fisier de pe server non-Microsoft
 
 7/31/2006 3:07:01 PM
User is offlineMihai Cazac
72 posts




Descarcare fisier de pe server non-Microsoft
 (N/A)
Salut,
Trebuie sa iau niste fisiere de pe un server de FTP si am la dispozitie VFP 6.0
Am inceput optimist cu functiile din wininet.dll si informatiile din MSDN
Au functionat fara repros, InternetOpen(), InternetConnect(), FtpSetCurrentDirectory() dar cand sa obtin fisierul, utilizand FtpGetFile() am avut probleme; dupa care, citind mai atent, am constatat cu stupoare ca aceasta functie necesita ca serverul pe care se afla fisierele sa fie unul din familia Windows, ceea ce nu este cazul meu.

Aveti vreo idee ?


 7/31/2006 6:12:28 PM
User is offlineDanTodor
297 posts
4th


Re: Descarcare fisier de pe server non-Microsoft
 (Romania)
Unde ai citit ca merge numai pe Windows ? Eu cred ca este mai curind o problema de nume de fisiere ( nu mai tin minte exact, dar era ceva cu primul caracter, daca trebuie sa pui sau nu un "/" in nume ). Poti sa postezi sintaxa care o folosesti si iti da eroare ? Eu am gasit intr-un proiect ceva mai vechi cam asa ceva :
FtpGetFile(INetConn, "~/myfile.txt", "c:\\temp\\myfile.txt", True, 1, 1, 0) ( VB ). Si tin minte ca n-am avut probleme.
 9/6/2006 6:52:25 PM
User is offlineMihai Cazac
72 posts




Re: Descarcare fisier de pe server non-Microsoft
 (N/A)
Multumesc de raspuns, si scuze ca nu l-am observat la timp; probabil mail-ul care anunta actualizarea topic-ului a ajuns in alta parte... Astazi, cautand altceva pe forum am gasit raspunsul tau. Oricum problema a ramas de actualitate...
Revenind la subj: > "Unde ai citit ca merge numai pe Windows ?"

In MSDN http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/ftpgetfile.asp


Requirements: Server Requires Windows Server "Longhorn", Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0. >"Poti sa postezi sintaxa care o folosesti si iti da eroare ?"

>"Poti sa postezi sintaxa care o folosesti si iti da eroare ?"

<code>
    dirActFtp = "software/449/download/actualizari"+chr(0)
    fisZipSrc    = "UPD00199.ZIP"+chr(0)
    fisZipDst    = "o:\temp\UPD00199.ZIP"+chr(0)

    ...

        if hConnection != 0 Then

            ? "m-am conectat", hConnection

            If FtpSetCurrentDirectory(hConnection,dirActFtp ) != 0 Then

                ? "m-am pus pe directorul cu arhivele"

                if  FtpGetFile (                    ;
                        hConnection,                ;
                        fisZipSrc,                    ;
                        fisZipDst,                    ;
                        0,                            ;
                        0,                            ;
                        FTP_TRANSFER_TYPE_BINARY,    ;
                        0                            ;
                    ) != 0                            ;
                then
                    ? "l-am adus"
                else
                    ? "nu l-am putut aduce"
                endIf
            else
                ? "nu m-am putut pune pe dir"
            endif
        else
            ? "nu m-am putut conecta"
        endIf



log-ul arata cam asa:

    m-am conectat   13363532
    m-am pus pe directorul cu arhivele
    nu l-am putut aduce

</code>



 9/7/2006 2:08:03 PM
User is offlineDanTodor
297 posts
4th


Re: Descarcare fisier de pe server non-Microsoft
 (Romania)
Pai incearca si sintaxa care ti-am postat-o eu mai sus, pentru nume sursa si nume destinatie. Daca serverul este de alt gen, de exemplu un Unix flavor, "nume_fisier" , "./nume_fisier" si "~/nume_fisire" nu sint neaparat echivalente.
 9/11/2006 11:25:13 PM
User is offlineMihai Cazac
72 posts




Re: Descarcare fisier de pe server non-Microsoft
 (N/A)

Am uitat să precizez în postul anterior că imediat dupa ce am citit mesajul tău
am mai încercat o dată variaţiuni pentru dirActFtp ( fisier , ./fisier , /fisier).
Nu am încercat cu ~/fisier întrucât asta înseamnă $HOME/fisier, ceea ce
nu este cazul, deoarece programul de log-ează ca anonymus.
Am mai încercat toate posinilităţile acum , inclusiv varianta cu ~/fisier , dar obţin
acelaşi rezultat, adică refuză să-l aducă.
Parerea mea este că sintaxa ~/fisier folosită de tine funcţiona pentru că luai fişierul
din directorul tău de login.

Acum urmează partea fericită. Deoarece m-am gândit că ai făcut cu siguranţă
download-ul respectiv, am presupus (ţinând cont de ce scrie în MSDN
la "Requirements:") că ai făcut-o de pe un server MS,
aşa că m-am gândit să încerc şi eu codul meu pentru un fişier de la
ftp.microsoft.com: "readme.txt" din directorul "bussys". Aş fi
demostrat ceea ce scrie în MSDN la Requirements: trebuie server Windows,
altfel nu merge.
Am constatat că nu descărca nici de aici fişierul şi mi-a fost clar
că este ceva în neregulă în codul meu.
Am verificat deci încă o dată codul şi totul î-mi părea OK.
Vazând aceasta am început sa fac presupuneri: aşa că am modificat
în apelul pentru InternetOpen şirul care desemnează "user agent" :
am scos spaţiile şi l-am făcut scurt: cu această modificare a făcut download,
aşa că am răsuflat uşurat. Dar, spre stupoarea mea la următoarele apeluri nu am mai reuşit.
După vreo doua ore şi jumătate de căutări şi încercări am găsit : am greşit apelul
la InternetOpen : lFlags trebuie să fie un INTEGER iar eu am pus acolo un chr(0)!
Cel mai tare m-a indus în eroare faptul că o dată a făcut download, şi apoi
nu a mai mers de fel. Pe urmă mai mergea câteodată, şi asta mă înnebunea!
În fine , bine că am găsit eroarea.

Codul complet l-am pus în secţiunea Download
http://www.algis.ro/pafiledb352/index.php?act=view&id=131
în speranţa că alţii vor evita să piardă vremea.

O paranteza: În postul anterior nu am postat în mod intenţionat codul
pentru InternetOpen deoarece conţinea partea cu proxy-ul ,
şi aş fi primit cu siguranţă răspunsuri că acolo undeva este cauza;
am verificat foarte bine respectivul cod şi ştiam că e ok,
mai ales pentru că se conecta la server.
Mai mult, aveam şi un cod java care chiar făcea download-ul, deci proxy-ul
funcţiona.


Pana la urma interventiile tale ferme si prompte mi-au deschis ochii;
lucru pentru care i-ti multumesc încă o dată. Şi în ce priveşte sintaxa
ai dreptate : pe serverele MS poţi specifica numele directorului fără
a avea un / în fată , pe când la *nix trebuie să-i zici "/director/alt-dir/etc"

Dar rămâne o întrebare: de ce specifică în MSDN că este nevoie pe partea
de server de unul din familia Windows ? Acest lucru m-a derutat poate cel mai tare,
şi , încă o dată , dacă nu erai tu să insişti că nu poate fi vorba de aşa
ceva, o lăsam nerezolvată.

  Visual FoxPro  Win32 API  Descarcare fisi...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement