今天在使用System.Net.WebClient做一个下载的时候,很郁闷,已经发不好的文件视频,却怎么也下载不了。

究其原因有两个,

  1. System.Net.WebClient对象的DownloadFileAsync(urine,filename)参数是否有误。
  2. 发布的网站是否可以访问,

对于上面两个原因,本人做了测试,

  1. 首先是测试了网站上的视频是否可以访问,使用本地的视频播放器打开网址视频,结果打不开,可知网站上的视频是不能访问的。解决方法:调整网址,重新设置ip地址,做法是选中iis上发布的网站,右键,选择编辑绑定,设置一个固定的ip ,操作如下图
  2. 设置以后,再次使用本地播放器,打开链接,可以播放。于是我就实用程序System.Net.WebClient对象的DownloadFileAsync(urine,filename)来下载,结果提示 什么MIME 类型无法访问,我上网看了下MIME是什么东西,简单地说就是MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。噢,到这里才明白,原来是格式问题。于是就有了下面操作,详情见下面的图:
  3. 下面是本人在搜索问题是发现的,作以引用,与本人的操作进行对比。
  4. 也许你会在纳闷,为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢?这就表明mp4格式文件是服务器无法识别的,其实,这是没有在iis中将相应的MIME类型进行设置的原因。那该怎样设置MIME类型呢?

  开启mp4文件的话,需要在 “Internet信息(IIS)管理器”中右击需要更改的网站或目录,可以打开形如下图的窗口(我右击的是文件夹而不是站点,所以您右击站点的话打开的 或许比我的选项卡多,不管怎样您点击HTTP头就可以打开怎样的窗口了):

  服务器增加mp4格式的MIME 类型映射设置的具体步骤是:
  “开始” > “控制面板” > “管理工具” >“Internet 信息服务(IIS管理器)”,找到您的网站,右击 > “属性” > “HTTP头” > “MIME类型” > “新建”,在“扩展名”框内输入“.mp4”,“MIME类型”框中输入“application/octet-stream”,然后确定即可。“MIME类型”只是一个描述,并非非得输入“flv-application/octet-stream”。

  服务器增加flv格式的MIME 类型映射设置的具体步骤是:
  “开始” > “控制面板” > “管理工具” >“Internet 信息服务(IIS管理器)”,找到您的网站,右击 > “属性” > “HTTP头” > “MIME类型” > “新建”,在“扩展名”框内输入“.flv”,“MIME类型”框中输入“flv-application/octet-stream”,然后确定即可。“MIME类型”只是一个描述,并非非得输入“flv-application/octet-stream”。

  MIME类型就是设定某种扩 展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以 及一些媒体文件打开方式。

下面列出常用的文件对 应的MIME类型:

Mime-Types(mime类型) Dateiendung(扩展名) Bedeutung
application/msexcel *.xls *.xla Microsoft Excel Dateien
application/mshelp *.hlp *.chm Microsoft Windows Hilfe Dateien
application/mspowerpoint *.ppt *.ppz *.pps *.pot Microsoft Powerpoint Dateien
application/msword *.doc *.dot Microsoft Word Dateien

application/octet-stream

*.exe exe
application/pdf *.pdf Adobe PDF-Dateien
application/post****** *.ai *.eps *.ps Adobe Post******-Dateien
application/rtf *.rtf Microsoft RTF-Dateien
application/x-httpd-php *.php *.phtml PHP-Dateien
     
application/x-java****** *.js serverseitige Java******-Dateien
application/x-shockwave-flash *.swf *.cab Flash Shockwave-Dateien
application/zip *.zip ZIP-Archivdateien
audio/basic *.au *.snd Sound-Dateien
audio/mpeg *.mp3 MPEG-Dateien
audio/x-midi *.mid *.midi MIDI-Dateien
audio/x-mpeg *.mp2 MPEG-Dateien
audio/x-wav *.wav Wav-Dateien
image/gif *.gif GIF-Dateien
image/jpeg *.jpeg *.jpg *.jpe JPEG-Dateien
image/x-windowdump *.xwd X-Windows Dump
text/css *.css CSS Stylesheet-Dateien
text/html *.htm *.html *.shtml -Dateien
text/java****** *.js Java******-Dateien
text/plain *.txt reine Textdateien
video/mpeg *.mpeg *.mpg *.mpe MPEG-Dateien
video/vnd.rn-realvideo *.rmvb realplay-Dateien
video/quicktime *.qt *.mov Quicktime-Dateien
video/vnd.vivo *viv *.vivo Vivo-Dateien

一下是本人的测试代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 测试下载
{
public partial class Form1 : Form
{
System.Net.WebClient wc = new System.Net.WebClient();
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
wc.DownloadFileAsync(new Uri("http://192.168.0.106:8088/demo.mp4"), Application.StartupPath + "\\新建文件夹\\1234.mp4");
//wc.DownloadFileAsync(new Uri("http://localhost:8088/demo.mp4"), Application.StartupPath + "\\新建文件夹\\1234.mp4");
//wc.DownloadFileAsync(new Uri("http://192.168.0.150:8080/设计器介绍.wmv"), Application.StartupPath + "\\新建文件夹\\1234.mp4");

}
public void DownLoadProgress(object sender, System.Net.DownloadProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
//MessageBox.Show("已经完成" + e.ProgressPercentage.ToString(), "提示完成百分比");
}

public void DownLoadCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("已经完成" + e.ToString(), "提示完成百分比");
System.Diagnostics.Process.Start(Application.StartupPath + "\\新建文件夹\\1234.mp4");
}

private void Form1_Load(object sender, EventArgs e)
{
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(DownLoadCompleted);
wc.DownloadProgressChanged += new System.Net.DownloadProgressChangedEventHandler(DownLoadProgress);
//this.progressBar1.Step = 1;
//this.progressBar1.PerformStep();
}
}
}

如何使用MIME类型的更多相关文章

  1. 上传和设置Mime类型

    这两天一直在忙把主页上传的事,幸亏不久前花七块钱买了一年的数据库和虚拟主机,昨天上传了自己的个人主页,发现很多问题要改,因为代码一直没整理就那么放着了,大部分东西都要重新弄,然后把本地数据库的数据迁移 ...

  2. 【积累篇:他山之石,把玉攻】Mime 类型列表

    按照内容类型排列的 Mime 类型列表 类型/子类型 扩展名 application/envoy evy application/fractals fif application/futurespla ...

  3. 如何在ASP.NET的web.config配置文件中添加MIME类型

    常常有一些特殊的MIME类型是IIS中没有的,一般来说要我们自己手动添加.如果网站经常更换服务器或者网站代码是提供给多个用户使用,那么会造成网站中用到的特殊的MIME类型要经常性的在IIS上配置.这里 ...

  4. 【IIS】IIS6.1配置 *.config 文件 的MIME类型用于升级程序

    参考:http://blog.csdn.net 1. 2. 请求筛选中允许config文件下载, 3. 添加.config到 MIME类型. 3.注意:筛选项.

  5. 使用MultipartEntity进行post请求的默认MIME类型

    MultipartEntity .FileBody的默认MIME类型:application/octet-stream

  6. 常用MIME类型(Flv,Mp4的mime类型设置)(转载)

    转载地址:http://www.cuplayer.com/player/Help/2011/0625/83.html 也许你会在纳闷,为什么我上传了flv或MP4文件到服务器,可输入正确地址通过htt ...

  7. 创建 MIME 类型////////////zzz

    用 Apache 创建 MIME 类型 在 Apache 里, MIME 类型和文件扩展名之间的映射是被存放在配置文件 "apache根目录/conf/mime.types" 里的 ...

  8. 各种文件的mime类型

    扩展名:abs MIME类型:audio/x-mpeg 扩展名:ai MIME类型:application/postscript 扩展名:aif MIME类型:audio/x-aiff 扩展名:aif ...

  9. 为Windows Azure Web站点添加MIME类型解决文件下载失败的问题

    这几天在倒腾Autodesk 360 Viewer,前面的文章也介绍过了,这将是一个全新的在线模型浏览工具.我做了个实验,把A360Viewer放在一个web 站点,然后发布到Windows Azur ...

  10. [转]IIS添加MIME扩展类型及常用的MIME类型列表

    http://www.cr173.com/html/18997_1.html 经常我在用IIS做为下载服务器的时候有时传上去的文件比如 xxx.iso 文件名名是传上去了,但是用http打开的时候确显 ...

随机推荐

  1. c# winform动态生成控件与获取动态控件输入的值

    差不多有2年没有写winform程序,一直都是写bs.最近项目需要,又开始着手写一个小功能的winform程序,需要动态获取xml文件的节点个数,生成跟节点个数一样的textbox, 最后还要获取操作 ...

  2. 怎样向IT行业的朋友说明《圣经》的重要性

    “世界的官方文档”——怎么样?

  3. C#微信开发之旅--准备阶段

    最近才开始学微信开发的相关内容,记录下,慢慢的养成习惯! 1.申请公众号: 公众号分为 订阅号 和 服务号.他们之前的区别可以点击这里查看 因为我们是测试的,所以可以直接申请测试帐号,就把所有的功能都 ...

  4. 02线性表链式存储_LinkList--(线性表)

    #include "stdio.h" #include "string.h" #include "ctype.h" #include &qu ...

  5. spring Cache注解

    如下:不能将缓存注解加在listCate(boolean isShowHide)方法上 因为spring是使用AOP的方法获取缓存,在一个bean中再去调用别一个方法,不会应用缓存 @Cacheabl ...

  6. 学习C++ Primer 的个人理解(十二)

    动态内存与智能指针 在C++中, 动态内存用 new来分配空间并返回一个指向该对象的指针 用delete来销毁. 由于手动的对动态内存进行操作容易出现问题.所以新的标准库提供了两种智能指针. 智能指针 ...

  7. 【HeadFirst设计模式】7.适配器模式与外观模式

    今晚学习完第七章,顺便做一下知识备忘. 适配器模模式: 定义:将一个类的接口,转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间. 对象适配器: 类适配器: 外观模式: 提供了一个统一 ...

  8. 今日吐槽20151208.net服务器控件

    正文 今天有个小任务是给页面添加一个搜索条件,复选框多选.因为页面都是服务器控件,我也只能用服务器控件配合了.然后给页面加了一个  CheckBoxList  控件.后台通过数据表加载数据. fore ...

  9. margin系列之百分比

    本系列摘自  px; height: 600px; } #demo p{ margin: 10% 5%; } HTML: <div id="demo"> <p&g ...

  10. CentOS 6.4 安装SecurectCRT并破解

    经过验证此方法使用于Centos 系列. 相关说明: 上篇发了个Linux(Ubuntu) 下 SecureCRT 7 30天循环破解在启动的时候会多输入一次确认窗口, 后来maz-1网友留言说可以用 ...