这个是我在开发一个视频播放时遇到的问题
#####这是前端的代码
$("#button2").click(function () {
//创建XMLHttpRequest对象
var xhr = new XMLHttpRequest();
//配置请求方式、请求地址以及是否异步
xhr.open('POST', '/Aerial/Video?pId=' + $("#platformId2").val(), true);
//设置请求结果类型为blob
xhr.responseType = 'blob';
//请求成功回调函数
xhr.onload = function (e) {
if (this.status == 200) {//请求成功
var blob = this.response;
var video2 = document.getElementById('video_player2');
var obj_url = window.URL.createObjectURL(blob);
video2.src = obj_url;
}
};
xhr.send();
function revokeUrl(url) {
window.URL.revokeObjectURL(url);
}
});
######这是控制器里的代码
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();
}
}