Hier ein CodeSchnipsel, wie ich eine Datei von meinem Hoster heruntergeladen habe. Allerdings ohne login, also prinzipiell "offen zugänglich".
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
void CBlabla::OnDownloadButton()
{
CInternetSession* pInternetSession;
pInternetSession = new CInternetSession();
m_sData = ""; // CString containing data
CHttpFile* pFile = (CHttpFile*)pInternetSession->OpenURL(
"http://www.irgendwo.net/data/test.php?all=testtable",
1,
INTERNET_FLAG_TRANSFER_BINARY |
INTERNET_FLAG_DONT_CACHE |
INTERNET_FLAG_RELOAD,
NULL,
0);
if (pFile)
{
char buf[256];
while( int iRead = pFile->Read( buf, 255 ) )
{
buf[iRead] = '\0';
m_sData += CString( buf );
}
pFile->Close();
delete pFile;
}
pInternetSession->Close();
delete pInternetSession;
}
|
Der Witz ist, dass Du eine php-Datei aufrufst und einen (oder mehrere) Parameter übergibst. Anhand dieser Parameter holt das Script dann Daten aus der mySQL-Datenbank und liefert sie zurück.
Auszug aus dem php-script (hier wird ein temporäres File erzeugt und dann an den Aufrufer gesendet; warum ich das damals nicht direkt gemacht habe, weiss ich nicht mehr genau... ahem):
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
if (isset($all))
{
//... hier Datenbank öffnen
//.....
$query = "Select * from $all";
$result= mysql_query($query,$DBHANDLE_GLOBAL);
//... hier Datenbank schliessen
//.....
$fh = fopen("../tmp/daten.txt","wb");
fwrite ($fh,...// hier nun alles, was man aus der DB hat, als Text ausgeben
fclose($fh);
// und jetzt an den Aufrufer senden
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize("../tmp/daten.txt"));
header("Content-Disposition: attachment; filename=" .basename("../tmp/daten.txt"));
$data="";
$d = fopen("../tmp/datentxt","rb");
while (!feof($d)) $data.=fread($d,12400);
fclose($d);
print $data;
}
|
Damit könntest Du prinzipiell Daten aus Deiner Db abfragen, glaube ich. Setzen sollte ähnlich gehen.