asp.net 输出的 flash不能播放 解决

我使用的是FileResult返回结果,利用FilePathResult或辅助函数File可以非常方便的把文件输出为下载,然而输出的flash死活不能在object的标签内播放!!!
可以正常下载,说明生成输出没问题,到底什么原因,尝试了多种flash文件的MIME类型,始终无法解决,经过反复对比,问题原来在使用了指定下载名参数,导致下载的头信息里增加了
Content-Disposition:attachmrnt;filename=xxx.swf
去掉重命名,一切OK!

FilePathResult和FileStreamResult的区别是什么?我们又该如何取舍呢?主要的区别是FilePathResult使用HttpResponse.TransmitFile来将文件写入Http输出流。这个方法并不会在服务器内存中进行缓冲,所以这对于发送大文件是一个不错的选择。他们的区别很像DataReader和DataSet的区别。于此同时, TransmitFile还有一个bug,这可能导致文件传到客户端一半就停了,甚至无法传送。而FileStreamResult在这方面就很棒了。比如说:返回Asp.net Chart 控件在内存中生成的图表图片,而这并不需要将图片存到磁盘中.

一、不想将文件真实地址直接暴露给客户。
       二、在下载某些文件类型时,相关程序直接打开文件而不是保存文件。(比如mp3,pdf, html 等等)
Modle:

        public FileResult down() //下载链接
        {
            string url = AppDomain.CurrentDomain.BaseDirectory + "/file/slow.mp3";
            return File(url, "text/plain", "音乐.mp3");
        }
        public ActionResult play() //直接播放链接
        {
           string url = Url.Content("/file/slow.mp3");
            return Redirect(url);
        }


Controller:

    @Html.ActionLink("下载","down")
    @Html.ActionLink("播放", "play")

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注