Anniversary - BF C/C++ week
80 % bodů zdarma na online výuku díky naší Narozeninové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++

Diskusia: Funkce Stahování v prohližeči webu

Aktivity (4)
Avatar
batman
Člen
Avatar
batman:12. mája 8:39

Zkoušel jsem implementovat funkci pro stahování do svého projektu Webbrowser v prvním případě jsem použil klasický Webbrowser z Visual Studia což je vlastně IE explorer starsiho typu a použil jsem Download Handler metodu bohužel nefunguje pak jsem zkoušel CefSharp webbrowser a použil jsem stejný postup bohužel také nefunguje hledal jsem i na stackoverflow jsou tam nejake rady bohužel yatím nic z toho nefungovalo nebo mně to skazilo celý kod a bylo třeba začít znovu poprosím vas někoho o radu nebo navod co stím děkuji předem za vaše odpovědi

 
Odpovedať
12. mája 8:39
Avatar
batman
Člen
Avatar
batman:12. mája 8:43

Prosím o radu chci implementovat funkci stahování do prohlížeče webu použil jsem klasický webbrowser ve Visual Studio a v druhém projektu CefSharp webbrowser hledal jsem odpověd i na stacoverflow ale bohužel nic z toho nefunguje děkuji za odpovědi

 
Hore Odpovedať
12. mája 8:43
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovedá na batman
Tadeáš Burda :12. mája 15:17

Nechapem ta, akoze chces aby ti isiel stiahnut subor z tvojho webu? To das iba download do linku. Srry ale fakt ta nechapem

Hore Odpovedať
12. mája 15:17
Nerozmýšlaj, ako ušetriť peniaze. Rozmýšlaj, ako ich zarobiť viac!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12. mája 15:56

Zkus popsat, co presne mas a co potrebujes, pripadne pridat nejaky kod. Treba to z kodu bude jasnejsi.

Zkusim ti dat par priklad z php. Treba najses podobne funkce v asp, o kterem zase tolik nevim.

<a href="soubory/soubor.jpg">stahni odkazem</a>

<a href="stahni.php?file=soubor.jpg">stahni odkazem</a>
<?php
// -- stahni.php --
$file = isset($GET['file']) ? trim($GET['file']) : '';
if ($file=='') exit();
$path = 'soubory/';
$content  = file_get_contents($path.$file); // vezmi obsah souboru
// a zbytek astavuje hlavicky pro stahovani souboru
        ob_clean();
        header('Content-Description: File Transfer');
        header('Content-Transfer-Encoding: binary');
        header('Content-Encoding: '.$charset);
        header('Content-Type: '.$type.'; charset='.$charset);
        header('Content-Disposition: attachment; filename="'.$file.'"');
        header('Content-Length: '.$size);
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        //header("Cache-Control: no-store, no-cache");
        header('Pragma: public');
        header('Expires: 0');
        echo $content;
        exit();
?>

<!-- a zde nekolik funkci v js pro stazeni souboru -->
<!-- je to ale z nejake me knihovny, takze si to budes muset nejak preopravit :) -->
<script>
this.func.fileFromUrl = function(path)
        {
        root.func.logMsg('fileFromUrl', 'Reading start...');
        root.func.logMsg('fileFromUrl', '"'+path+'"');
//      opt.log('classReader.func.fileFromUrl: File reading start...');
        root.req = new XMLHttpRequest();
        root.req.responseType = 'blob'; // pro FileReader
        root.req.onload  = root.opt.cbRequest;
        root.req.onerror = root.opt.cbRequestError;
        root.req.error_path = path;
        root.req.open('GET', path, true);
        root.req.send();
        }

this.func.fileFromInput = function(elInput)
        {
        root.opt.log('classReader.func.fileFromInput: File reading...');
        var file = elInput.files[0];
        if (!file)
                {
                root.opt.log('classReader.func.fileFromInput: Chyba, neni soubor.');
                return;
                }
        root.reader = new FileReader();
        root.reader.onload = root.opt.cbReader;
        root.reader.readAsText(file,'windows-1250');
        }

this.func.cbDestroyClickedElement = function (event)
        {
        var event = event || window.event;
        document.body.removeChild(event.target);
        }

this.func.saveTextAsFile = function (file_name, textToWrite)
        {
        var textFileAsBlob, browser_name, el;
        var BOM = "\uFEFF";
        textToWrite    = BOM + textToWrite;
        textFileAsBlob = new Blob([textToWrite], {type:'text/plain;charset=utf-8;'});   // ulozi jako utf8 bez BOM, ten se musi pridat
//      textFileAsBlob = new Blob([textToWrite], {type:'text/plain;windows-1250;'});
//      textFileAsBlob = new Blob([textToWrite], {type:'text/plain;'});
//      textFileAsBlob = new Blob([textToWrite], {type:'text/plain;windows-1250;'});
        browser_name   = navigator.appName;
        if (browser_name=='Microsoft Internet Explorer')
                {
                window.navigator.msSaveBlob(textFileAsBlob, file_name);
                return;
                }
        el = document.createElement('a');
        el.download  = file_name;
        el.innerHTML = 'Download File';
        if (window.webkitURL != null)   // chrome
                {
                el.href = window.webkitURL.createObjectURL(textFileAsBlob);
                }
        else    {       // Firefox
                el.href    = window.URL.createObjectURL(textFileAsBlob);
                el.onclick = root.func.cbDestroyClickedElement;
                el.style.display = 'none';
                document.body.appendChild(el);
                }
        el.click();
        }

this.func.void = function()
        {
        }

</script>
 
Hore Odpovedať
12. mája 15:56
Avatar
Ghst
Člen
Avatar
Ghst:12. mája 16:48

Batman se pokouší napsat "vlastní" webový prohlížeč za pomoci DOT.NET komponenty WebBrowser control. Pravděpodobně implementuje funkci pro stahování souboru, tak jak ji známe třeba z chromu.

Zkus postnout svůj kód.

 
Hore Odpovedať
12. mája 16:48
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovedá na Ghst
Tadeáš Burda :12. mája 17:22

Aha, už chápu

Hore Odpovedať
12. mája 17:22
Nerozmýšlaj, ako ušetriť peniaze. Rozmýšlaj, ako ich zarobiť viac!
Tento výukový obsah pomáhajú rozvíjať nasledujúce firmy, ktoré možno hľadajú práve teba!
Avatar
Odpovedá na batman
Ondřej Šrytr:12. mája 20:40

Záleží, co všechno daná komponenta nabízí. Zkoušel jsi tohle? https://stackoverflow.com/…4289428/down. Bude to samozřejmě potřebovat nějaký čas a trošku se v tom pohrabat. :-)

 
Hore Odpovedať
12. mája 20:40
Avatar
batman
Člen
Avatar
batman:13. mája 14:28

Určitě to zkusím Ondřeji myslim že už jsem to četl a možná i použil ale zkusím to znovu možná se zadaří a děkuji všem za odpovědi a omlouvám se že nebylo hned jasné o co mi jde ale Ghst na to kápnul ano chci funkci stahováni do mého webprohlížeče tak jak ji normálně známe z ostatních prohlížečů prostě dáš na jakékoli stránce download na jakýkoli soubor pokud je ke stažení a ono to stahne ten soubor mám i stažený prohlížeč od jiného developera který je udělaný taky s tím CefSharp komponentem a psal že ma hotovou funkci stahování tak jsem to zkusil ve Visual Studiu spustit a nemaká mu to moc dobře (pada mu to na http strankach nekterych a php stranky to otvírá ale nestáhne skoro nic pokud se spustí stahování tak po par vteřinách spadne s exception error výpisem) možná je problém pravě v tom komponentu ještě jednou všem děkuji a pokud by jste mněli nejaké nápady klidně napište prečtu si je

 
Hore Odpovedať
13. mája 14:28
Avatar
batman
Člen
Avatar
batman:13. mája 14:43
using CefSharp;
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Moj_Chrome
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        ChromiumWebBrowser chrome;

        private void Form1_Load(object sender, EventArgs e)
        {
            CefSettings settings = new CefSettings();
            Cef.Initialize(settings);
            txtUrl.Text = "https://www.google.com";
            chrome = new ChromiumWebBrowser(txtUrl.Text);
            this.pContainer.Controls.Add(chrome);
            chrome.Dock = DockStyle.Fill;
            chrome.AddressChanged += Chrome_AddressChanged;
        }

        private void Chrome_AddressChanged(object sender, AddressChangedEventArgs e)
        {
            this.Invoke(new MethodInvoker(() =>
            {
                txtUrl.Text = e.Address;
            }));
        }

        private void btnGo_Click(object sender, EventArgs e)
        {
            chrome.Load(txtUrl.Text);
        }

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            chrome.Refresh();
        }

        private void btnForward_Click(object sender, EventArgs e)
        {
            if (chrome.CanGoForward)
                chrome.Forward();
        }

        private void btnBack_Click(object sender, EventArgs e)
        {
            if (chrome.CanGoBack)
                chrome.Back();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
        }

        private void btnHome_Click(object sender, EventArgs e)
        {
            chrome.Load(txtUrl.Text = "https://www.google.com");
        }
    }
}
 
Hore Odpovedať
13. mája 14:43
Avatar
batman
Člen
Avatar
batman:13. mája 14:46

Funkce stahování tam v tomhle kodu není kvůli spoustě chyb musel jsem to vše smazat a nechat takhle na prohlížení to je super jen kdyby to stahovalo

 
Hore Odpovedať
13. mája 14:46
Avatar
batman
Člen
Avatar
batman:22. mája 10:40

Funkci stahování už mám hotovou a stahuje to soubory testoval jsem to ještě doladit aby se to zobrazovalo jako v ostatních prohlížečích a hotovo všem děkuji a pomohlo mi tohle od Ondřeje Šrytra
https://stackoverflow.com/…arp-winforms jen jsem to musel pochopit o co tam jde a funguje to

 
Hore Odpovedať
22. mája 10:40
Avatar
Odpovedá na batman
Ondřej Šrytr:22. mája 21:45

Tak to jsem rád, že ti to pomohlo a vyřešil jsi to. :)

 
Hore Odpovedať
22. mája 21:45
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 12 správy z 12.