Diskuze: Funkce Stahování v prohližeči webu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 12 zpráv z 12.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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
Nechapem ta, akoze chces aby ti isiel stiahnut subor z tvojho webu? To das iba download do linku. Srry ale fakt ta nechapem
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>
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.
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
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");
}
}
}
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
Zobrazeno 12 zpráv z 12.