簡體   English   中英

如何在asp.net mvc中使用DownloadProgressChangedEventHandler?

[英]How Can I Use DownloadProgressChangedEventHandler in asp.net mvc?

我有網站,我想用WebClient Class下載文件。

例如,我有網址,我想下載它。 在控制台應用程序中,此方法和代碼正常工作

這是控制台應用程序中的示例代碼:

public void DownloadFile(string sourceUrl, string targetFolder)
    {
        WebClient downloader = new WebClient();
        downloader.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
        downloader.DownloadFileCompleted += new AsyncCompletedEventHandler(Downloader_DownloadFileCompleted);
        downloader.DownloadProgressChanged +=
            new DownloadProgressChangedEventHandler(Downloader_DownloadProgressChanged);
        downloader.DownloadFileAsync(new Uri(sourceUrl.Replace(@"\","")), targetFolder);
        while (downloader.IsBusy) { }
    }

private void Downloader_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        //Console.Write(e.BytesReceived + " " + e.ProgressPercentage);  

        Console.Write("%" + e.ProgressPercentage);
    }

此示例代碼在控制台應用程序中正常工作

我如何在asp.net mvc應用程序中使用此示例代碼。

對於asp.net mvc它應該喜歡這個(我認為)

      public ActionResult DownloadPage()
    {
        string url = "https://rjmediamusic.com/media/mp3/mp3-256/Mostafa-Yeganeh-Jadeh.mp3";
        var downld = new DownloadManager();
        downld.DownloadFile(url, @"c:\\temp\1.mp3");
        return View();
    }

對我來說,事件處理程序方法(Downloader_DownloadProgressChanged)非常重要,因為我想在客戶端創建進度條。

我認為這是最好的方法。 但怎么可以?

您可以通過將此代碼添加到項目中來實現此目的:

public void DownloadFile(string sourceUrl, string targetFolder)
{
    WebClient downloader = new WebClient();
    downloader.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
downloader.DownloadFileCompleted += new AsyncCompletedEventHandler(Downloader_DownloadFileCompleted);
downloader.DownloadProgressChanged +=
    new DownloadProgressChangedEventHandler(Downloader_DownloadProgressChanged);    
downloader.DownloadFileCompleted += new AsyncCompletedEventHandler(Downloader_DownloadFileCompleted);
    downloader.DownloadProgressChanged +=
        new DownloadProgressChangedEventHandler(Downloader_DownloadProgressChanged);
    downloader.DownloadFileAsync(new Uri(sourceUrl.Replace(@"\","")), targetFolder);
    while (downloader.IsBusy) { }
}

private void Downloader_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
    //Console.Write(e.BytesReceived + " " + e.ProgressPercentage);  

    Console.Write("%" + e.ProgressPercentage);
}

暫無
暫無

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

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