šak keď sa to spraví aby url a meno súboru dosadené v source code tak to si stiahne automaticky po spustení.
Příspěvky odeslané z IP adresy 95.103.195.–
AnonImouS
AnonImouS
Tu je Source Code funkčnééé pri spustený sa tam zadá url adresa a meno súboru ako sa bude volať po stiahnutí. Ale jak to spraviť tak aby sa url a meno súboru zapísalo do source codu a aby sa nemusela url a meno súboru zapisovať po spustení programu. Ako nato??? Za odpoveď. Ďakujem.
TU JE SOURCE CODE
//---------------------------------------------------------------------------------
// Sťahovanie súborov z internetu pomocou WinInet
//---------------------------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <windows.h>
#include <string>
#include <wininet.h>
// hlavičkový súbor knižnice WinInet
//---------------------------------------------------------------------------------
#define VELKOST_VYROVNAVACEJ_PAMATE 256 // veľkosť vyrovnávacej pamäte použitej
// pri čítaní internetového súboru
//---------------------------------------------------------------------------------
#pragma comment(lib,"WinInet.lib") // prilinkovanie knižnice WinInet
//---------------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------------
int main(int argc, char * argv[])
{
cout << "Stahovanie suborov z internetu" << endl;
string url,subor;
cout << "Zadajte URL suboru: ";
getline(cin,url);
cout << "Zadajte nazov suboru na ulozenie: ";
getline(cin,subor);
// V prvom rade si deklarujeme premenné, ktoré budeme používať
HINTERNET spojenie,internetovySubor;
// Teraz si vytvoríme spojenie, inicializujeme aplikáciu na používanie WinInet
spojenie = InternetOpenA("Moj internetovy prehladavac",
INTERNET_OPEN_TYPE_PRECONFIG, // Predvolené nastavenia
0, // Žiadne proxy
0,
0); // Žiadne príznaky
if (spojenie == 0) // NULL
{
cout << "Nie je mozne inicializovaz WinInet" << endl;
cout << "Kod chyby: " << GetLastError() << endl;
return 1;
}
// Následne otvoríme spojenie so súborom, ktorý je definovaný pomocou URL
internetovySubor = InternetOpenUrlA(spojenie, // Inštancia spojenia
url.c_str(), // URL adresa súboru
0, // Žiadna prídavná HTTP hlavička
0, // Dĺžka prídavnej hlavičky
0, // Žiadne príznaky
0);
if (internetovySubor == 0) // NULL
{
cout << "Nie je mozne vytvorit spojenie so suborom" << endl;
DWORD kodChyby = GetLastError();
cout << "Kod chyby: " << kodChyby << endl;
char chyba[256];
DWORD chybaVelkost = 255;
if (InternetGetLastResponseInfoA(&kodChyby,chyba,&chybaVelkost))
cout << "Popis chyby: " << chyba << endl;
// Nesmieme zabudnúť zatvoriť už inicializovaný handler s WinInet
InternetCloseHandle(spojenie);
return 1;
}
// V tomto kroku môžeme zistiť podrobnosti o súbore
DWORD informacia;
DWORD velkostInformacie = sizeof(DWORD);
// Najskôr si zistíme HTTP status kód (napr. status kód 200 znamená OK, 404 znamená súbor nenájdený)
if (!HttpQueryInfoA(internetovySubor, // Inštancia nami vytvoreného spojenia so súborom
HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, // Požadujeme status ktorý je číselným typom
&informacia, // Sem bude zapísaný výsledok volania
&velkostInformacie, // Veľkosť dátovej jednotky informácie
0))
{
cout << "Nie je mozne zistit kod statusu" << endl;
cout << "Kod chyby: " << GetLastError() << endl;
InternetCloseHandle(internetovySubor);
InternetCloseHandle(spojenie);
return 1;
}
cout << "Status odpovede: " << informacia << endl;
// Ak sa status odpovede nerovná 200, nedostaneme súbor, ktorý sme požadovali
if (informacia != HTTP_STATUS_OK)
{
cout << "Status spojenia NIE je OK" << endl;
InternetCloseHandle(internetovySubor);
InternetCloseHandle(spojenie);
return 1;
}
// Vytvoríme si vyrovnávaciu pamäť, do ktorej budeme ukladať časti súboru
char * vyrovnavaciaPamat = new char[VELKOST_VYROVNAVACEJ_PAMATE];
// Vytvoríme si výstupný súbor
fstream vystupnySubor(subor.c_str(), // Názov výstupného súboru
ios_base::out | ios_base::binary); // Budeme zapisovať v binárnom móde
// Premenná, do ktorej sa bude ukladať koľko sme z internetového súboru prečítali
DWORD precitane = 0;
// Premenná, do ktorej uložíme celkový počet stiahnutých bajtov
DWORD stiahnute = 0;
cout << "Stahujem\t\t\t";
while (InternetReadFile(internetovySubor, // Spojenie na náš internetový súbor
vyrovnavaciaPamat, // Vyrovnávacia pamäť
VELKOST_VYROVNAVACEJ_PAMATE, // Koľko môžeme max. prečítať
&precitane)) // Koľko WinInet prečítal
{
if (precitane == 0) // Už sme všetko prečítali, ukončiť
break;
stiahnute += precitane;
if (informacia != 0) // Ak vieme o veľkosti súboru môžeme vypočítať %
cout << "\rStahujem " << (int)((stiahnute*100)/informacia) << "%";
else // Inak len vypíšeme celkový počet stiahnutých B
cout << "\rStahujem " << stiahnute << " B";
// Zapísať do vsýtupného súboru
vystupnySubor.write((const char*)vyrovnavaciaPamat,precitane);
}
cout << endl << endl;
// Zatvoríme spojenia
InternetCloseHandle(internetovySubor);
InternetCloseHandle(spojenie);
// Zatvoríme výstupný súbor
vystupnySubor.close();
// Nezabudneme vyrovnávaciu pamäť uvoľniť :)
delete [] vyrovnavaciaPamat;
return 0;
}
AnonImouS
Cawte mám program napísaní v Dev C++. Kompilacia prebehne úspešne bez chyby ale žiadny exe súbor sa nevytvorí. A keď dám Preložiť a spustiť tak to vypíše Zdrojový kód nie je preložený. Kde môže byť chyba?? Za odpoveď. Ďakujem.