Diskuze: Stahování
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 19 zpráv z 69.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Pokud použiju tohle:
private void button1_Click(object sender, EventArgs e)
{
WebClient webClient = new WebClient();
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
List<string> Urls = new List<string>();
Urls.Add("http://www.itnetwork.cz/download2.php?file=505b0c67d08e0&name=ISIM_setup.exe");
Urls.Add("http://www.itnetwork.cz/download2.php?file=5065548f7c5a8&name=MenovaKalkulacka.zip");
foreach (string File in Urls)
{
string headerContentDisposition = webClient.ResponseHeaders["content-disposition"];
string fileName = new ContentDisposition(headerContentDisposition).FileName;
webClient.DownloadFileAsync(new Uri(File), @"C:\Users\Patrik\Desktop" + fileName);
}
}
private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void Completed(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("Stahování bylo úspěšně dokončeno");
}
Tak to napíše:
Odkaz na objekt není nastaven na instanci objektu.
Je to u řádku s:
string headerContentDisposition = webClient.ResponseHeaders["content-disposition"];
No jo, to je fakt. To bys musel použít OpenRead, ale pak bys
musel zapisovat data manuálně.
Budeš stahovat soubory z určitého serveru? Že by sis ten název vytvořil podle url adresy?
Nebo ho můžeš zadávat manuálně.
Budu to stahovat z určitého serveru.
A můžeš ukázat příklady adres odkazující na soubory? Jestli se z nich dá nějak vyčíst název.
Př. adresy: http://neco.eu/…kysoubor.zip
Tak tady by šlo třeba:
string adresa = "http://neco.eu/download/nejakysoubor.zip";
string fileName = adresa.Substring(adresa.LastIndexOf('/') + 1);
Dobře a když je těch souborů více?
List<string> Urls = new List<string>();
Urls.Add("http://neco.eu/download/nejakysoubor.zip");
Urls.Add("http://neco.eu/download/nejakysoubor2.zip");
foreach (string File in Urls)
{
string FileName = File.Substring(File.LastIndexOf('/') + 1);
webClient.DownloadFileAsync(new Uri(File), @"C:\Users\Patrik\Desktop\" + FileName);
}
Díky moc, ale teď to píše zase tuto chybu:
'string' does not contain a definition for 'SubString' and no extension method 'SubString' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
Je to Substring. Ale tak to už sis mohl dohledat 
Aha jen změnit na malé písmeno
, no to mohl
Díky
moc, doufám že už to bude fungovat. Hraju si s tím už skoro týden.
Ach jo, už zase:
Klient WebClient nepodporuje souběžné operace vstupu a výstupu.
U řádku:
webClient.DownloadFileAsync(new Uri(File), @"C:\Users\Patrik\Desktop\" + FileName);
Sice nevím, proč je File s velkým F, ale Substring nemá to druhé velké S.
EDIT: Ještě k tomu řádku, chyba může být (a tady je) na řádku výše, než ukazuje IDE.
Aha. Tak to asi budeš muset počkat na dokončení stahování a v události
Completed volat další. Nebo možná zkus použít metodu
DownloadFile bez toho Async.
Jinak asi:
private void Completed(object sender, AsyncCompletedEventArgs e)
{
Urls.RemoveAt(0);
if (Urls.Count > 0)
{
string FileName = Urls[0].Substring(Urls[0].LastIndexOf('/') + 1);
webClient.DownloadFileAsync(new Uri(Urls[0]), @"C:\Users\Patrik\Desktop\" + FileName);
}
}
A Urls a webClient si musíš dát jako třídní proměnné. Tzn. mimo metodu, aby byly viditelné i pro ostatní metody. Snad to už bude fungovat. Vařím z vody nikdy jsem přes C# nic nestahoval. Tak mě prosím omluv, že chybuju.
Nevadí, každý chybuje, bez toho Async jsme to měli doposud, ale ten
program při stahování neodpovídal a různě se zasekával i když soubory
stáhl, to je pravda. Proto jsem se doslechl že když přidám Async, tak by to
mělo být v pořádku a ten program by měl jet plynule. Mohl bych se tedy
zeptat, jak by vypadal výsledný script? Asi jsem ..., že si to neumím
udělat, ale takové věci jsem ještě nedělal.
Díky moc
Nějak takto. Ale projdi si základy tady na webu. Nechci to tu za tebe
stále psát 
WebClient webClient = new WebClient();
List<string> Urls = new List<string>();
private void button1_Click(object sender, EventArgs e)
{
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
Urls.Add("http://neco.eu/download/nejakysoubor.zip");
Urls.Add("http://neco.eu/download/nejakysoubor2.zip");
DownloadFile(Urls[0]);
}
private void DownloadFile(string Url)
{
string FileName = Url.Substring(Url.LastIndexOf('/') + 1);
webClient.DownloadFileAsync(new Uri(Url), @"C:\Users\Patrik\Desktop\" + FileName);
}
private void Completed(object sender, AsyncCompletedEventArgs e)
{
Urls.RemoveAt(0);
if (Urls.Count > 0)
{
DownloadFile(Urls[0]);
}
}
Zobrazeno 19 zpráv z 69.