# FTP upload funktioniert nicht



## silver-line (30. März 2007)

Hallo,

ich möchte ein Programm, dass eine FTP Verbindung aufbaut und eine Datei hochläd.
Hab mich da eben schon eingelesen und habe folgenden code:

```
#include <windows.h>
#include <wininet.h>
#include <process.h>
#include <iostream>
#include <fstream>
#include<stdio.h>
#include<conio.h>
#include<wininet.h>
#pragma comment(lib, "Wininet.lib")
#pragma comment(lib, "ws2_32")
//#pragma comment(lib, "libwininet.a")

using namespace std;

void upload(void);

void upload()
{
    HINTERNET hOpen, hConnection;
   
    hOpen = InternetOpen("FTP Upload", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
   
    hConnection = InternetConnect(hOpen, "-server-", INTERNET_DEFAULT_FTP_PORT,
                                     "-user-", "-pass-", INTERNET_SERVICE_FTP, 0, 0);
                                     
    FtpPutFile(hConnection, "C:\\-datei-", "//-datei-",
                  FTP_TRANSFER_TYPE_ASCII, 0);
                 
    InternetCloseHandle(hConnection);
    InternetCloseHandle(hOpen);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstande, LPSTR IpCmdLine, int nShowCmd)
{   
   
        upload();
   
return 0;
}
```

Also er verbindet und erstellt auch die Datei, läd sie aber scheinabr nicht hoch, da sie am Ende 0kb groß ist.
Als ich noch #pragma comment(lib, "libwininet.a") hatte, bekam ich "LINK : fatal error LNK1104: cannot open file "libwininet.a""
Ohne die Zeile gab es keine Linker Fehlermeldungen, aber vll. liegt es ja trotzdem daran, weiß leider auch nich, wie ich das Problem beheben kann, desshalb frage ich ja 

Grüße,
Martin


----------



## Endurion (31. März 2007)

Ich hab mit der WINInet noch nie FTP gemacht, aber ich bin mir ziemlich sicher, dass es an den ASCII-Typ liegt. Setze da mal FTP_TRANSFER_TYPE_BINARY ein.


----------



## silver-line (31. März 2007)

Es funktioniert! Vielen Dank!


----------



## puuhbaer (7. Juni 2008)

Ich hab den Code mal ausprobiert und bei mir zeigt er dann folgendes an:



> C:\DOKUME~1\BASTIA~1\LOKALE~1\Temp/ccgLbaaa.o:Untitled1.cpp.text+0x12e): undefined reference to `InternetOpenA@20'
> C:\DOKUME~1\BASTIA~1\LOKALE~1\Temp/ccgLbaaa.o:Untitled1.cpp.text+0x177): undefined reference to `InternetConnectA@32'
> C:\DOKUME~1\BASTIA~1\LOKALE~1\Temp/ccgLbaaa.o:Untitled1.cpp.text+0x1a8): undefined reference to `FtpPutFileA@20'
> C:\DOKUME~1\BASTIA~1\LOKALE~1\Temp/ccgLbaaa.o:Untitled1.cpp.text+0x1b6): undefined reference to `InternetCloseHandle@4'
> C:\DOKUME~1\BASTIA~1\LOKALE~1\Temp/ccgLbaaa.o:Untitled1.cpp.text+0x1c4): undefined reference to `InternetCloseHandle@4'



Woran liegt das?


----------



## sheel (7. Juni 2008)

Du musst die wininet libs etc schon einbinden 

nur so aus neugier: welchen compiler verwendest du den?

ich kenn mich jenseits der visual-welt nicht aus


----------



## puuhbaer (14. Juni 2008)

Als IDE benutze ich DEV-C++ und als compiler ist da der Minigw dabei.

Wie binde ich die libs denn ein?
Ich hab den Code kopiert und nichts geändert...Wie füge ich die denn jetzt da rein?

Es handelt sich immernoch um die Fehleranzeige aus meinem Post bevor.


----------



## trench140 (14. Juni 2008)

Hi,

ich hatte nen ähnliches Problem mit Eclipse + MinGW, als ich mit Sockets arbeiten wollte.

Ich musste dem Linker manuell angeben, dass er "-l wsock32" beim Linken verwenden sollte.
D.h. hier könnte es helfen "-l wininet" oder so anzugeben... nur eine Vermutung, ich schlag mich mit Windows-Libs erst seit nen paar Tagen rum.

Gruß,
Trench


----------

