ximalangyashan 2023-02-10 03:47 采纳率: 98.9%
浏览 23
已结题

下面的c# mvc void Action客户端得到什么内容

下面的c# mvc void Action客户端得到什么内容

这是控制器里的代码

        public void Video(string pId)
        {
            //var pId = "HYNB_MP";
            var url = GetAerialUrl(pId);
            var filePath = Urlconvertorlocal(url);
            //这里需要获取全路径 如:D:\project\images\video\products\video.mp4
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
            if (fileInfo.Exists == true)
            {
                FileStream fs = new FileStream(filePath, FileMode.Open);
                byte[] bytes = new byte[(int)fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();

                //Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileInfo.Name));
                Response.AddHeader("Content-Length", "" + fileInfo.Length.ToString());
                Response.AddHeader("Content-Transfer-Encoding", "binary");
                Response.ContentType = "application/octet-stream";
                Response.ContentEncoding = System.Text.Encoding.UTF8;
                Response.BinaryWrite(bytes);
                Response.Flush();
                Response.End();
            }
        }

运行成功后会成功播放视频,但想不通video方法明明时void无返回值的,但为何设置了返回值后还是会正常返回

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2023-02-10 03:48
    关注

    因为题主调用了Response.BinaryWrite输出内容。和方法什么返回值没关系。如果方法设置了返回值,那么要在最后返回和方法定义的类型一样的数据,要不编译时会报错。
    mvc的直接定义返回值为ActionResult,return File(filePath ,"application/octet-stream");就行了,不用搞那么麻烦。然后mvc会自动调用Response对象输出需要的信息,只是mvc做了包装,不需要调用Response相关方法输出。
    如果题主学过webform,就很好理解Response.Write作用了。webform很多处理方法都是void类型的,特别ashx处理文件,都是用Response获取和输出内容到客户端。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月10日
  • 创建了问题 2月10日

悬赏问题

  • ¥15 加热反应炉PLC控制系统设计(相关搜索:梯形图)
  • ¥15 python 用Dorc包报错,我的写法和网上教的是一样的但是它显示无效参数,是什么问题
  • ¥15 指定IP电脑的访问设置
  • ¥30 matlab ode45 未发现警告,但是运行出错
  • ¥15 vscode platformio
  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部