ITnetwork summer 2020
80 % bodů zdarma na online výuku díky naší Letní akci!

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

Aktivity (4)
Avatar
batman
Člen
Avatar
batman:12. května 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

 
Odpovědět
12. května 8:39
Avatar
batman
Člen
Avatar
batman:12. května 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

 
Nahoru Odpovědět
12. května 8:43
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na batman
Tadeáš Burda :12. května 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

Nahoru Odpovědět
12. května 15:17
Nerozmýšlaj, ako ušetriť peniaze. Rozmýšlaj, ako ich zarobiť viac!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12. května 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>
 
Nahoru Odpovědět
12. května 15:56
Avatar
Ghst
Člen
Avatar
Ghst:12. května 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.

 
Nahoru Odpovědět
12. května 16:48
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na Ghst
Tadeáš Burda :12. května 17:22

Aha, už chápu

Nahoru Odpovědět
12. května 17:22
Nerozmýšlaj, ako ušetriť peniaze. Rozmýšlaj, ako ich zarobiť viac!
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na batman
Ondřej Šrytr:12. května 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. :-)

 
Nahoru Odpovědět
12. května 20:40
Avatar
batman
Člen
Avatar
batman:13. května 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

 
Nahoru Odpovědět
13. května 14:28
Avatar
batman
Člen
Avatar
batman:13. května 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");
        }
    }
}
 
Nahoru Odpovědět
13. května 14:43
Avatar
batman
Člen
Avatar
batman:13. května 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

 
Nahoru Odpovědět
13. května 14:46
Avatar
batman
Člen
Avatar
batman:22. května 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

 
Nahoru Odpovědět
22. května 10:40
Avatar
Odpovídá na batman
Ondřej Šrytr:22. května 21:45

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

 
Nahoru Odpovědět
22. května 21:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.