首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用WebBrowser控件下载文件,而不使用“文件下载”对话框?

问如何使用WebBrowser控件下载文件,而不使用“文件下载”对话框?
EN

Stack Overflow用户
提问于 2019-04-03 17:20:39
回答 1查看 2K关注 0票数 2

在WPF项目中,我使用方法

代码语言:javascript
复制
webBrowser.Navigate(strUrl);

从服务器获取PNG图片。

将出现以下对话框:

​

​

如何无缝下载图片(没有对话框)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 01:23:36

为此,您不需要使用浏览器控件。

尝试使用DownloadFileAsync()

这是一个完整的工作示例。(根据需要更改路径。)

代码语言:javascript
复制
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        WebClient client = new WebClient();
        client.DownloadFileAsync(new Uri("https://www.example.com/filepath"), @"C:\Users\currentuser\Desktop\Test.png");
        client.DownloadFileCompleted += Client_DownloadFileCompleted;
        client.DownloadProgressChanged += Client_DownloadProgressChanged;
    }

    private void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        progressBar.Value = e.ProgressPercentage;
        TBStatus.Text = e.ProgressPercentage + "% " + e.BytesReceived + " of " + e.TotalBytesToReceive + " received.";
    }

    private void Client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
    {
        MessageBox.Show("Download Completed");
    }

您可以使用默认应用程序打开下载的文件,如下所示:

代码语言:javascript
复制
System.Diagnostics.Process.Start(@"C:\Users\currentuser\Desktop\Test.png");

编辑:

如果您的目标只是显示png,则可以将其下载到流中,然后在image control中显示它。

完整的工作样本。

代码语言:javascript
复制
WebClient wc = new WebClient();
MemoryStream stream = new MemoryStream(wc.DownloadData("https://www.dropbox.com/s/l3maq8j3yzciedw/App%20in%205%20minutes.PNG?raw=1"));
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(stream);
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
stream.Position = 0;
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = stream;
bi.EndInit();
image1.Source = bi;

以下是异步版本。

代码语言:javascript
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
    WebClient wc = new WebClient();
    wc.DownloadDataAsync(new Uri("https://www.dropbox.com/s/l3maq8j3yzciedw/App%20in%205%20minutes.PNG?raw=1"));
    wc.DownloadDataCompleted += Wc_DownloadDataCompleted;
}

private void Wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
{
    MemoryStream stream = new MemoryStream((byte[])e.Result);
    System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(stream);
    bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
    stream.Position = 0;
    BitmapImage bi = new BitmapImage();
    bi.BeginInit();
    bi.StreamSource = stream;
    bi.EndInit();
    image1.Source = bi;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55491530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档