簡體   English   中英

通過C#中的ActiveX下載文件

[英]Download file through ActiveX in C#

我有啟動ActiveX來下載文件的html。

而不是使用Internet Explorer下載文件,而是希望它通過C#/。NET完成

HTML看起來像這樣:

<HTML>
    <HEAD>
        <META http-equiv="Content-Type" content="text/html; charset=utf-8">
        <OBJECT ID="o" CLASSID="CLSID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" CODEBASE="https://YYYYYY/grTransferCtrl.cab#version=5,0,0,32">
        </OBJECT>
        <SCRIPT LANGUAGE=VBScript FOR=window EVENT="onLoad()">

            On Error Resume Next

            o.Persist "AAA"
            o.Persist "BBB"
            o.Persist "CCC"

            bRetVal = o.Launch()
            If(Err.Number > 0 Or bRetVal = False) Then 
            msgbox "There was an error launching File Transfer Manager.",0,""
            End if

        </SCRIPT>
    </HEAD>
<BODY></BODY>


如何直接從C#應用程序啟動下載?

您要查找的關鍵字是` WebRequest '

以下將大致執行您想要的操作:

var request = WebRequest.Create("https://YYYYYY/grTransferCtrl.cab#version=5,0,0,32");

//This is where you may need to add cookies and other header data for this to work.
//I would use fiddler to try and inspect the http requests sent by the control for this
//information
request.UseDefaultCredentials = true;
var response = request.GetResponse();

using (var file= response.GetResponseStream())
{
    //do something with the stream? save it?
}   
response.Close();

或者,您可以在應用程序中創建ActiveX控件並使用它。 Web上有大量資源可用於將ActiveX控件添加到.NET表單應用程序中,而只是沒有意識到此特定控件對其環境造成的哪些假設可能會阻止這種情況。

您可以通過使用System.Net.WebClient實現此目的

Example:

public class Downloader
{
  public void DownloadFile()
  {
     using(WebClient webClient = new WebClient())
     {
         webClient.DownloadFile("http://www.stackoverflow.com/stacks.txt", @"c:\stacks.txt");
     }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM