如何使用WebClient类下载大视频文件

时间:2012-02-02 14:50:30

标签: c# winforms webclient webclient-download

我是新手,我正在开发一个Windows应用程序。我需要从我的网站下载一个视频文件,这是我的问题。我设计了一个自定义下载器,通过它我可以从我的站点下载图像,文本文件。但我无法从我的网站下载视频。有谁可以帮帮我..?

WebClient client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(new Uri("http://mysitename.com/Videos/vid.mp4"), "c:\\movie.mp4");

我不想通过响应内容发送下载,因为我的客户希望我通过自定义浏览器下载..所以请让我知道您的专家的解决方案..谢谢

2 个答案:

答案 0 :(得分:4)

我尝试使用WebClient下载视频文件,但它确实有效。我的设置如下:

我在defaultwebsite(IIS)中有一个虚拟目录(视频),其中包含此视频文件。

我只是使用以下代码将视频文件下载到C盘:

var client = new WebClient();
Uri address = new Uri("http://localhost/Video/wildlife.wmv");
client.DownloadFileAsync(address, @"c:\video.wmv");

另请注意,由于您是以Async方式下载,请等待大约一分钟才能完成操作以下载完整文件。最初它显示0个字节,但根据大小需要一些时间来完成它。

更新:如果您的服务器没有指定文件mime类型,那么只需添加到IIS可以提供​​的mime类型集合,您就可以毫无问题地下载该文件。

添加MIME类型时,要使用的以下值(对于您的方案):

File Extension: .mp4
MIME Type: video/mp4 

要在IIS中添加mime类型,请按以下链接进行操作:

  1. For IIS 4,5
  2. For IIS 6
  3. For IIS 7

答案 1 :(得分:0)

这听起来更像服务器问题,但如果您怀疑代码,可能需要尝试下载同步(我在过去下载异步时遇到了一些问题)。另一种方法是使用WebRequest类。如果此服务器非常远程,请事先尝试ping。我认为您还应该检查以确保文件在服务器上,如果文件非常大,您应该检查文件是否已完成上传。