IDownloadHandler 인터페이스를 달성하기 위해, 팝업 상자 저장 파일을 다운로드 CEfSharp

이전 섹션 CefSharp는 C #에 통합하는 방법에 대해 이야기하지만, 통합 웹 인터페이스는 ChromiumWebBrowser에 연결하지만 약간 할 웹 인터페이스에 첨부 파일 기능을 다운로드합니다.

또는 오랜 시간 동안 바이 만 Excample 및 소스 코드의 공식 웹 사이트를 볼 얻을, 그리고 마지막으로 얻을 수있는 죽은 쥐 블라인드 고양이를 명중하지 않았다, 우리는 인터페이스를 구현해야합니다.

공개 RevenueContractFrmWeb (어댑터 어댑터) 
        { 
            어댑터 = 어댑터; 
            InitializeComponent를 (); 
            // 문자열 URL = GlobalDefination.Urlex + "/go-logistics-client/inAndOutPages/incomeContract/contractMg/ContractMain.jsp"; 
            // webBrowser.Navigate (URL + + adapter.SessionId "sessionId가 =?"); 

            문자열 URL = GlobalDefination.Urlex + " /go-logistics-client/inAndOutPages/incomeContract/contractMg/ContractMain.jsp?sessionId= " + adapter.SessionId; 
            CefSharp.WinForms.ChromiumWebBrowser WB = 새로운  CefSharp.WinForms.ChromiumWebBrowser (URL)를;
            wb.Dock = DockStyle.Fill;
            .Controls.Add (WB); 
            wb.DownloadHandler는 = 새로운 MyDownloadHandler을 (); 
        }

구현 클래스

 내부  클래스 MyDownloadHandler : IDownloadHandler 
        { 

            공공  부울 OnBeforeDownload (CefSharp.DownloadItem downloadItem, 밖으로  문자열 downloadPath, 밖으로  부울 ShowDialog를) 
            { 
                downloadPath = "" ; 
                ShowDialog를이 = 진정한 ;
                반환  사실 ; 
            } 
            공공  부울은 (CefSharp.DownloadItem downloadItem) OnDownloadUpdated 
            { 
                반환  거짓을 ; 
            }
        }

 

 

출처 : https://blog.csdn.net/weiyongliang_813/article/details/50575706

================================================== ================================================== =

팝업 상자 IDownloadHandler, Winfrom 포함 된 웹 페이지 내보내기 기능 응답 저장 파일을 다운로드 CEfSharp

 사용 CefSharp 단계; 

 공공 ChromiumWebBrowser 브라우저; 
 NativeAppJsObjBasic NativeAppJsObj; 

// 窗体部分
개인  무효 FrmWebView_Load ( 개체 보낸 사람, EventArgs입니다 전자) 
        { 
 
            브라우저는 = 새로운 ChromiumWebBrowser (URL)를; 

            panel1.Controls.Add (브라우저); 
            browser.Dock = DockStyle.Fill; 
            NativeAppJsObj는 = 새로운 NativeAppJsObjBasic을 (); 
            browser.RegisterJsObject ( " NativeAppJsObj " , NativeAppJsObj, 진정한 );
            NativeAppJsObj.OnSessionExpired + = NativeAppJsObj_OnSessionExpired; 
            browser.IsBrowserInitializedChanged + = Browser_IsBrowserInitializedChanged; 
            browser.DownloadHandler는 = 새로운 MyDownLoadFile을 (); 

        } 


    ///  <요약> 
    /// 响应下载文件兼容
     ///  </ 요약> 
    공공  클래스 MyDownLoadFile : IDownloadHandler 
    { 
        공공  무효 OnBeforeDownload (IBrowser 브라우저, DownloadItem downloadItem, IBeforeDownloadCallback 콜백) 
        { 
            경우 (! callback.IsDisposed)
            { 
                사용 (콜백) 
                { 
                    callback.Continue ( @ " C : \ 사용자 \ " + 
                            System.Security.Principal.WindowsIdentity.GetCurrent () 이름입니다. +
                             @ " \ 다운로드 \ " + 
                            downloadItem.SuggestedFileName, 
                        ShowDialog를 : 사실 ); 
                } 
            } 
        } 

        공공  무효 OnDownloadUpdated (IBrowser 브라우저, DownloadItem downloadItem, IDownloadItemCallback 콜백) 
        { 
            //downloadItem.IsCancelled = 거짓; 
        }
         공공  부울은 (CefSharp.DownloadItem downloadItem) OnDownloadUpdated 
        { 
            반환  거짓을 ; 
        } 
    }

 

 

출처 : https://blog.csdn.net/qq_41715982/article/details/97284255

================================================== ================================================== =

당신이 다운로드에 사용되는 IE를 다운로드하려면 다음의 방법을 참조 할 수 있습니다 :

공공 무효 OnBeforeDownload (IBrowser 브라우저, DownloadItem downloadItem, IBeforeDownloadCallback 콜백)
{
      웹 브라우저 즉 = 새로운 웹 브라우저 ();
      ie.Navigate (downloadItem.Url);
}

 

원본 링크 : https://blog.csdn.net/CFY530/article/details/81145875

================================================== ================================================== =

다운로드 한 파일 문제를 저장할 수 없습니다 발생 최근 CEFsharp 측면을하고있다. 녹화가 해결. 주로 적용
IDownloadHandler이
메소드 호출
; web.MenuHandler = 새로운 새 MyWebContextMenu ()
web.DownloadHandler = 새로운 새 MyDownLoadFile을 ();

IDownloadHandler.cs 파일

    ///  <요약> 
    /// 下载文件
     ///  </ 요약> 
    공공  클래스 MyDownLoadFile : IDownloadHandler 
    { 
        공공  무효 OnBeforeDownload (IBrowser 브라우저, DownloadItem downloadItem, IBeforeDownloadCallback 콜백) 
        { 
            경우 (! callback.IsDisposed) 
            { 
                사용 (콜백) 
                { 
                    callback.Continue ( @ " C : \ 사용자 \ " + 
                            System.Security.Principal.WindowsIdentity.GetCurrent () 이름입니다. +
                             @ " \ 다운로드 \" + 
                            downloadItem.SuggestedFileName, 
                        ShowDialog를 : 사실 ); 
                } 
            } 
        } 
 
        공공  무효 OnDownloadUpdated (IBrowser 브라우저, DownloadItem downloadItem, IDownloadItemCallback 콜백) 
        { 
            // downloadItem.IsCancelled = 거짓; 
        }
         공공  부울은 (CefSharp.DownloadItem downloadItem에게) OnDownloadUpdated 
        { 
            반환  거짓을 ; 
        } 
    }

 

 

출처 : https://blog.csdn.net/u010919083/article/details/78342503

================================================== ================================================== =

CEF 다운로드는 파일을 일시 정지하고 계속 취소하고 다른 작업을 다운로드하는 등이 풍부한 인터페이스 및 제어 기능을 제공, 매우 쉽게 확장 할 수 있습니다. 그리고 CEF는 또한 당신도 저장 대화 상자를 달성하기 위해 자신의 필요가 없습니다 필요하지 않습니다 경우 우리가, 기본으로 저장 대화 상자를 구현하는 데 도움이. 우리는 두 개의 인터페이스에 대해 (cefclient 프로젝트를 사용한 예) 다음으로 CEF 보면 다운로드 기능을 구비

상속 CefDownloadHandler

모든 것이 시작하기 전에, 우선 당신은 CefDownloadHandler ClientHandler에 범주를 상속 할 :

이 클래스는 각각 두 개의 인터페이스를 제공 OnBeforeDownload하고 OnDownloadUpdated다운로드가 당신은 당신의 필요에 따라 인터페이스에 몇 가지 사전 처리 작업을 구현해야, 인터페이스는 콜백입니다 시작하기 전에 전자는 작업입니다. 후자는 작업, 상태 및 제어 기능의 진행을 포함하여 다운로드 프로세스 콜백 인터페이스의 작업입니다. 다음은 두 개의 인터페이스 상세히 설명한다.

OnBeforeDownload 인터페이스

virtual void OnBeforeDownload(
      CefRefPtr<CefBrowser> browser,
      CefRefPtr<CefDownloadItem> download_item,
      const CefString& suggested_name,
      CefRefPtr<CefBeforeDownloadCallback> callback) = 0;

파일 다운로드를 시작하기 전에 인터페이스에 위의 소개는, 호출됩니다

  • 매개 변수는 현재 브라우저 인스턴스를 나타냅니다
  • download_item는 멤버 함수를 통해 다운로드 작업의 상태 정보를 포함 IsInProgress, IsComplete, IsCanceled이 겉으로는 이해가되지 않습니다 판단 다운로드하기 전에 파일의 현재 상태,하지만 파일을 결정하고 다른 방법.
  • suggested_name는 세트 이름을 저장, 일반 제안 된 이름과 마지막 파일 이름의 파일 경로를 차단합니다 당신의 도움 현재 CEF 좋은 조언을 나타냅니다.
  • 이 콜백 매개 변수는 콜백 메서드 계속 호출 할 때, 작업이 다운로드를 시작합니다, 더 중요한 것은, 최초의 콜백 매개 변수 download_path저장 대화 상자가 팝업 여부를 이름이 파일을 저장하는 것입니다, 두 번째 매개 변수는, 때 초를 나타냅니다 매개 변수가 true로 설정되어있는 경우, CEF 대화 저장 저장 파일을 팝업하는 데 도움이 될 것입니다. false로 설정하면 다음 저장 대화 상자를 팝업되지 않고 자동으로 첫 번째 경로 매개 변수 세트에 파일을 저장.

이 인터페이스를 통해, 우리는 당신이 인터페이스에서 다운로드 작업을 생성 할 때와 같은 일부 사전 처리 작업을 수행 할 수 있습니다, 당신은 할 수 있습니다 download_item작업이 인수 매개 변수를 시작 관한 표현하기 위해 UI에 ID (GetId 방법을) 작업. 다음으로, 작업 ID에 따라 인터페이스의 내용을 업데이트하기 위해 다음 다운로드 작업 상태 업데이트 기능을 입력합니다.

OnDownloadUpdated 인터페이스

인터페이스는 작업에 콜백 다운로드 프로세스이지만, 내가 테스트로까지 OnBeforeDownload 인터페이스에 우선 순위를 부여합니다이 인터페이스가 호출 될 때, 구체적인 이유는 아직 확실히 이해하지 않지만, 무해, 여기에 우리는 만에 작업 상태 및 제어 기능의 진행에 관심을 .

virtual void OnDownloadUpdated(CefRefPtr<CefBrowser> browser,
                                 CefRefPtr<CefDownloadItem> download_item,
                                 CefRefPtr<CefDownloadItemCallback> callback) {}
  • 이 작은 도입 브라우저
  • 전술 한 바와 같이 Download_item, 작업의 진행 당신은 CefDownloadItem 인터페이스는 어떤 제어 기능을 살펴 가지고 볼 수, 다운로드 된 등등, 상태, 다운로드 속도를 얻을 수 있습니다.
  • 콜백 인터페이스 위 다음의 콜백 및 콜백 인터페이스가 왔을 때,이 콜백은 계속 제어 작업을 일시 중지 할 수 있으며, 정지, 당신은 현재의 작업과 결합 콜백 아이디의 작업 목록을 유지할 수 있습니다 동일하지 않습니다 제어 메시지 임무를 일시 정지, 콜백이 목록에 태스크 ID를 찾을 수 있습니다, 일시 정지 작업에 콜백 메소드 일시 정지를 호출합니다. 물론, 완료 또는 시간을 취소하는 작업의 목록에서 이러한 콜백 및 작업 아이디 사이의 결합 관계를 제거하는 것을 잊지 마세요.

개요

CEF에서 제공하는 다운로드 인터페이스 제어 기능은 여전히 ​​매우 풍부하다, 심지어는 다운로드 속도는 당신이 직접 사용할 수있는 계산을 완료 할 수 있도록 진행하고 있습니다. 당신은 개인화 된 화면 일부 UI를 달성 할 경우 모두 수행 할 수 있습니다. 당신은 자신을 위해 그것을 시도 기술적 인 질문은 아래 논의 즐겁게 체험 할 수 있습니다.

 

출처 : https://www.mycode.net.cn/language/cpp/2627.html

================================================== ================================================== =

 

추천

출처www.cnblogs.com/mq0036/p/11932228.html