mvc实现上传视频预览
上个项目中用到了上传视频,本来打算用百度的webuploader做的,但是webuploader可能有个毛病就是不能上传太大的东西。
于是乎,只能换个方法做了啊,看了半天最终决定用传统的uploaderfile来做。顺便吐槽下uploaderfile真的是,和webuploader相比完全是有点复杂啊
OK回到正题,这个uploaderfile最为重要的个人感觉就是引用--一般情况下要注意引用的顺序,要先引用jq.min而且是只能引用一次,不然就会报错,笔者之前用的模板就有一个引用,然后又引用了一次也是非常的吃瘪啊。
要想成功的使用webuploaderfile需要引用4个东西算上jq需要有5个
引用成功后到下一步就是网页的布局问题--需要一些布局
<tr id="aa1">
<td>
上传视频
</td>
<td>
<div style="margin-top:20px;text-align:left;">
<span>请上传:</span>
<span style='color:blue;'>(只支持,'mp4')</span>
</div>
<div style="margin-top:10px;">
<form action="" name="" enctype="multipart/form-data">
<input id="upload" type="file" name="files" class="upinput" param1="xxx" />
</form>
</div>
<div id="progress" style="width:200px;margin-bottom:10px;">
进度条:<div class="bar" style="width: 0%;"></div>
</div>
<!-- 预览框: -->
<div class="preview"></div> </td> </tr>
由于这个项目笔者没有怎么用心,所以命名什么都比较随意了一些
OK接下来就是在Js中实例化代码了
<script type="text/javascript">
$("#upload").fileupload({
autoUpload: true, type: 'post', url: "@Url.Action("UploadVideo")",//文件上传地址,当然也可以直接写在input的data-url属性内 dataType: "json", //如果不指定json类型,则传来的json字符串就需要解析jQuery.parseJSON(data.result); progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
}, done: function (e, data) {
//done方法就是上传完毕的回调函数,其他回调函数可以自行查看api
//注意data要和jquery的ajax的data参数区分,这个对象包含了整个请求信息
//返回的数据在data.result中,这里dataType中设置的返回的数据类型为json
if (data.result.sta) {
// 上传成功:
$(".preview").html("<video width='640' id='video111' height='360' src=" + data.result.previewSrc +
" id='player1'controls='controls' preload='none'></video> ");
} else {
// 上传失败:
alert(data.result.msg);
} }
});
</script>
这里面我做了一些限制和后来上传成功后能够成功的插入一段新的视屏代码
再次顺便提一下笔者的视屏控件属于html5自带的video控件,笔者完成项目的时候老师要求的是使用flash插件来使用,对于此笔者表示不解和无趣。flash播放视频的时候笔者认为很快就会结束了,于是直接使用了html5的方式
完成前台的这些设计后就是后台控制器中的判断上传视频的问题了
[HttpPost]
public ActionResult UploadVideo(HttpPostedFileBase files=null)
{
if (files != null && files.ContentLength > )
{
string folderpath = "/UploadFile/Video/";
if (!Directory.Exists(folderpath))
{
Directory.CreateDirectory(Server.MapPath(folderpath));
}
string ext1 = Path.GetExtension(files.FileName);
if (ext1 != ".mp4" && ext1 != ".wmv" && ext1 != ".mpeg" && ext1 != ".avi" && ext1 != ".mp3" && ext1 != ".wav" && ext1 != ".wma" && ext1 != ".rmvb")
{
return Json(new { sta = false, msg = "文件格式不正确!" });
}
else
{
string name = DateTime.Now.ToString("yyyyMMddHHmmssff");
string ext = Path.GetExtension(files.FileName);
string downpath = folderpath + name + ext;
string filepath = Server.MapPath(folderpath) + name + ext;
files.SaveAs(filepath);
return Json(new { sta = true, previewSrc = downpath, id = name });
}
}
else
{
return Json(new { sta = false, msg = "请上传文件!" });
}
}
和上一个笔者写的上传图片一样视频存的文件夹在上传图片里面的一个子文件夹
不过笔者这儿偷懒了,判断格式的时候没怎么写。这大概是我当初对这个项目不怎么上心的缘故吧
功能自此已经完全实现了,接下来我会放出效果图
上面是样式我们先来一个其他格式的文件
会直接报错显示格式不正确
接下来上传一个正常的视频文件
上传成功样式直接出来
视频也能正常播放
OK基本上到这儿就全部结束了
mvc实现上传视频预览的更多相关文章
- ASP.NET MVC图片上传前预览
回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...
- mvc上传图片(上传和预览)webuploader
笔者看到mvc最近比较流行,而很多使用一些比较旧的的方法上传图片,再次安利一下百度的webuploader控件吧 webuploader第一步要先下载一些插件这点可以在webuploader官网上下载 ...
- FileReader与URL.createObjectURL实现图片、视频上传前预览
之前做图片.视频上传预览常用的方案是先把文件上传到服务器,等服务器返回文件的地址后,再把该地址字符串赋给img或video的src属性,这才实现所谓的文件预览.实际上这只是文件“上传后再预览”,这既浪 ...
- input file实现多选,限制文件上传类型,图片上传前预览功能
限制上传类型 & 多选:① accept 属性只能与 <input type="file" /> 配合使用.它规定能够通过文件上传进行提交的文件类型. ② mu ...
- hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images
hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images, 本例子主要是使用HTML5 的File API,建立一個可存取到该file的url, 一个空的img标签,ID为img0,把 ...
- html之file标签 --- 图片上传前预览 -- FileReader
记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...
- 【转】HTML5 jQuery图片上传前预览
hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images,本例子主要是使用HTML5 的File API,建立一個可存取到该 file的url,一个空的img标签,ID为img0,把选 ...
- Jcrop+uploadify+php实现上传头像预览裁剪
最近由于项目需要,所以做了一个上传头像预览并且可以预览裁剪的功能,大概思路是上传的图片先保存到服务器,然后通过ajax从服务器获取到图片信息,再利用Jcrop插件进行裁剪,之后通过PHP获取到的四个裁 ...
- 图片上传本地预览。兼容IE7+
基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari 预览地址:http://www.jinbanmen.com/test/1.html js代码:/**名称 ...
随机推荐
- C#获取本机可用端口
当我们要创建一个Tcp/UDP Server connection ,我们需要一个范围在1000到65535之间的端口 .但是本机一个端口只能一个程序监听,所以我们进行本地监听的时候需要检测端口是否被 ...
- Unity3D游戏开发初探—2.初步了解3D模型基础
一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...
- 依赖倒置(DIP)与依赖注入(DI)
依赖倒置原则(Dependency Inversion Principle)为我们提供了降低模块间耦合度的一种思路,依赖注入(Dependency Injection)是一种具体的实施方法. 依赖倒置 ...
- 从零3D基础入门XNA 4.0(1)——3D开发基础
[题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...
- MySQL 分析服务器状态
标签:MYSQL/数据库/性能优化/调优 概述 文章简单介绍了通过一些查询命令分析当前服务器的状态. 目录 概述 获取服务器整体的性能状态 SQL操作计数 总结 步骤 获取服务器整体的性能状态 首先对 ...
- KnockoutJS 3.X API 第七章 其他技术(4) 速率限制
注意:这个速率限制API是在Knockout 3.1.0中添加的. 通常,更改的observable立即通知其订户,以便依赖于observable的任何计算的observable或绑定都会同步更新. ...
- react + iscroll5 实现完美 下拉刷新,上拉加载
经过几天的反复折腾,总算做出一个体验还不错的列表页了,主要支持了下拉刷新,上拉加载两个功能. 一开始直接采用了react-iscroll插件,它是基于iscroll插件开发的组件.但是开发过程中,发现 ...
- SSIS Design7:数据类型的选择
对于SSIS的数据类型,容易遗漏精度的是DateTime,不正确的使用DateTime,time,decimal 等数据类型,可能导致溢出或数据丢失. 1,Variable 和 Parameter的D ...
- LINQ系列:Linq to Object聚合操作符
聚合函数在一系列的值上执行特定的运算,并返回单个值,如在给定元素的值上执行求和或计数运算. LINQ共有7种聚合操作符:Aggregate.Average.Count.LongCount.Max.Mi ...
- LINQ系列:Linq to Object分区操作符
分区是指将一个单一的输入序列划分成两个或多个部分或序列,同时不会对输入元素重排序,返回一个新形成的部分.LINQ分割操作符包括Skip.SkipWhile.Take和TakeWhile. 1. Ski ...