2017-02-13 7 views
0

cefsharpを使用して複数のファイルをダウンロードする方法cefsharpを使用して複数のファイルをダウンロードする

このコードを使用してファイルをダウンロードできます。しかし、私の問題は、最初のリンクをダウンロードすることだけです。 cefsharpに複数のファイルをダウンロードさせるにはどうすればいいですか?

foreach (var item in ListofLinks) 
       { 
browser.Load(item); 
} 

//on my form load 

browser.DownloadHandler = new MyDownloadHandler(); 

    class MyDownloadHandler : IDownloadHandler 
      { 
       public event EventHandler<DownloadItem> OnBeforeDownloadFired; 

       public event EventHandler<DownloadItem> OnDownloadUpdatedFired; 
       public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) 
       { 
        var handler = OnBeforeDownloadFired; 
        if (handler != null) 
        { 
         handler(this, downloadItem); 
        } 

        if (!callback.IsDisposed) 
        { 
         using (callback) 
         { 
          callback.Continue(downloadItem.SuggestedFileName, showDialog: true); 
         } 
        } 

       } 

       public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) 
       { 

        var handler = OnDownloadUpdatedFired; 
        if (handler != null) 
        { 
         handler(this, downloadItem); 
        } 

       } 
      } 

私は私のプロジェクトでhttps://github.com/cefsharp/CefSharp/blob/84930b0784fb8d934af22f4f3cd8a089af6eccf1/CefSharp/IBrowserHost.cs

を追加し、私は

OnBeforeDownloadFired()の実装が示されていないので、私は次のことを含めていインタフェース

class DownloadMe : IBrowserHost{ 

} 


public void StartDownload(string url) 
      { 
       //what code do i need here? 
      } 
+0

ソースを検索、StartDownload代わりの負荷を呼び出してみメソッドを見つける。 – amaitland

+0

どこに@amitlandを見つけることができますか? –

+0

GitHubはソース – amaitland

答えて

1

を実装DownloadHandlerクラスの使用方法の多くのオンライン例で説明します。

これは、ダウンロードリンクのターゲットが「_blank」だった場合、ファイル(例:.mobi電子ブック)をダウンロードする際の問題を解決するのに役立ちました。ターゲットがない場合は、ダウンロードダイアログが表示されます。 _blankターゲットでは、ポップアップウィンドウを非表示にしてブラウザで新しいカスタムタブを開く必要がありましたが、このときにダウンロードダイアログは表示されませんでした。

これは正しいと思います。それがお役に立てば幸い、または少なくともあなたのスタートを与える:あなたのコードで

DownloadHandler downer = new DownloadHandler(this); 
browser.DownloadHandler = downer; 
downer.OnBeforeDownloadFired += OnBeforeDownloadFired; 
downer.OnDownloadUpdatedFired += OnDownloadUpdatedFired; 

private void OnBeforeDownloadFired(object sender, DownloadItem e) 
{ 
    this.UpdateDownloadAction("OnBeforeDownload", e); 
} 

private void OnDownloadUpdatedFired(object sender, DownloadItem e) 
{ 
    this.UpdateDownloadAction("OnDownloadUpdated", e); 
} 

private void UpdateDownloadAction(string downloadAction, DownloadItem downloadItem) 
{ 
    /* 
    this.Dispatcher.Invoke(() => 
    { 
     var viewModel = (BrowserTabViewModel)this.DataContext; 
     viewModel.LastDownloadAction = downloadAction; 
     viewModel.DownloadItem = downloadItem; 
    }); 
    */ 
} 

// ... 

public class DownloadHandler : IDownloadHandler 
{ 
    public event EventHandler<DownloadItem> OnBeforeDownloadFired; 

    public event EventHandler<DownloadItem> OnDownloadUpdatedFired; 

    MainForm mainForm; 

    public DownloadHandler(MainForm form) 
    { 
     mainForm = form; 
    } 

// ... 
0

:用

foreach (var item in ListofLinks) 
       { 
browser.Load(item); 
} 

が変更に:

foreach (var item in ListofLinks){ 
var cefBrowser = browser.GetBrowser(); 
IBrowserHost ibwhost = cefBrowser == null ? null : cefBrowser.GetHost(); 
ibwhost.StartDownload(item); 
} 
関連する問題