English 中文(简体)
禁止在网上浏览器控制下“S Save/Open Dialog”箱
原标题:Suppressing the Save/Open Dialog box in a WebBrowser control

我有一个网络浏览器控制,自动将我输入一个网站,并试图自动下载CSV数据。 除试图下载CSV数据外,所有工作都属于罚款,但该公司正在收集一个方言箱,询问我是否想挽救档案或打开档案(如IE)。 我试图做的是,将CSV档案自动下载到我选择的档案中(或者更好,将CSV档案直接输入一个星体变量)。 我看不出如何压制方言和自动捕获下载。 然而,由于:

(1) 我现在使用全球倡议。 所有这一切都是在一类(母体,如锡德凯斯等方法不会成为可行的解决办法)中进行的。

(2) 下载来自一个安全地点,需要认证。 网络浏览器控制对我来说都是如此,但如果我利用网络查询和网络回应试图捕获下载,我就不再作认证。

我正在使用C#。

问题回答

你可以 h看你自己的身份识别载荷。 管理人员的安装工作,可以快速下载。 就Windows表格而言,这意味着你必须超越网上浏览器。 创建WebBrowserSiteBase方法,提供你的扩大控制点。 Webbrowser Controlroms

你可以把Java语从网络Browser控制中注入到你的C#代码,并在你想要时将其节省下来,而不用把储蓄作为方言箱。 如果一个自动网站需要登录和执行会议或要求核查等,那么,印行《Java》的文字确实是有益的。

逻辑是将 Java印成像(在网络浏览器控制中)那样下载文档,然后由tes改成第64号指示和返回基数。 然后,C#代码将第64号基数转换成tes子,并将作为软盘上的文件保存。 它可以是任何档案,例如: Excel或PDF等。

由于WebBrowser控制是以因特网探索者为基础的,因此它不支持快车牌照,因此你必须使用XMLHttpRequest。 如网页浏览器控制网页下载链接即可,然后在网上浏览器控制中注入文字:

string strScript = "var fileInBase64; " +
    "var oReq = new XMLHttpRequest();" +
    "            oReq.onload = function(e) {" +
    "                var buffer = oReq.response;" +
    "                //Convert response to base64 string" +
    "                var reader = new FileReader();" +
    "                reader.readAsDataURL(buffer);" +
    "                reader.onloadend = function() {" +
    "                    fileInBase64 = reader.result;//Buffer value in fileInBase64" +
    "                }" +
    "            };" +
    "            oReq.open( GET ,  downloadLink );" +
    "            oReq.responseType =  blob ;" +
    "            oReq.send(); ";
HtmlElement head = wb.Document.GetElementsByTagName("head")[0];
HtmlElement script = wb.Document.CreateElement("script");
script.SetAttribute("text", strScript);
head.AppendChild(script);

由于XMLHttpRequest可能无法立即准备就绪,因此,在等待1或2秒后,可检索文件InBase64变式注入其他文字的价值,或添加另一个条件(或逻辑),等待文件InBase64变数存档。

string strScript = "function getBase64(){return fileInBase64;}";
HtmlElement head = wb.Document.GetElementsByTagName("head")[0];
HtmlElement script = wb.Document.CreateElement("script");
script.SetAttribute("text", strScript);
head.AppendChild(script);
object o = wb.Document.InvokeScript("getBase64");

现在, object的档案是第64号底线,随时可以保存。 使用以下代码在软盘上加以节省:

o = o.ToString().Replace("data:application/excel;base64,", ""); //replace to make a valid base64 string.
System.IO.File.WriteAllBytes("D:/file.xls", Convert.FromBase64String(o.ToString()));

对我来说,这是在从网上浏览器下载档案时绕过除方言箱的最佳解决办法。 我希望这也将有助于其他人。

你可以压制文件下载方言,因为这将构成重大的安全风险。 我建议你调查其他路线,如果你想要使这一进程自动进行,就验证你的请求。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签