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 > 0)
            {
                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基本上到这儿就全部结束了

时间: 2024-12-20 09:46:05

mvc实现上传视频预览的相关文章

ASP.NET MVC图片上传前预览

@{ ViewBag.Title = "Picture"; } <!DOCTYPE html> <html> <head> <script src='@Url.Content("~/assets/plugins/jquery-1.10.2.min.js")' type="text/javascript"></script> <script type="text/javas

H5上传前预览视频(结合 video标签 &amp;&amp;h5 fileApi)

2017/09/14 发布 js代码: // hTML5实现表单内的上传文件框,上传前预览视频,刷新预览video,使用HTML5 的File API, // 建立一个可存取到该file的url,一个空的video标签,ID为video0,把选择的文件显示在video标签中,实现视频预览功能. // 需要选择支持HTML API的浏览器. $("#video").change(function(){ var objUrl = getObjectURL(this.files[0]) ;

input file实现多选,限制文件上传类型,图片上传前预览功能

限制上传类型 & 多选:① accept 属性只能与 <input type="file" /> 配合使用.它规定能够通过文件上传进行提交的文件类型. ② multiple 属性规定输入字段可选择多个值. 示例: <!-- image/* 所有图片 image/png png图片 image/jpg jpg图片 image/gif gir动图 application/msword Word文档(.doc) application/vnd.openxmlform

html之file标签 --- 图片上传前预览 -- FileReader

记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了其他方式来实现了这个功能. 今天无意发现了一个知识点,用html的file标签就能实现图片上传前预览,感觉很棒,记录一下!就是通过file标签和js的FileReader接口,把选择的图片文件调用readAsDataURL方法,把图片数据转成base64字符串形式显示在页面上. 1.闲话少说,测试一下,图片上

HTML5 jQuery图片上传前预览

HTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images,本例子主要是使用HTML5 的File API,建立一個可存取到该file的url,一个空的img标签,ID为img0,把选择的文件显示在img标签中,实现图片预览功能.请选择支持HTML API的浏览器,比如谷歌Chrome和火狐等. <!DOCTYPE html><html> <head> <title>HTML5上传图片预览</title> <meta char

[转]html之file标签 --- 图片上传前预览 -- FileReader

记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了其他方式来实现了这个功能. 今天无意发现了一个知识点,用html的file标签就能实现图片上传前预览,感觉很棒,记录一下!就是通过file标签和js的FileReader接口,把选择的图片文件调用readAsDataURL方法,把图片数据转成base64字符串形式显示在页面上. 1.闲话少说,测试一下,图片上

servlet实现文件上传,预览,下载和删除

CreateTime--2017年9月4日09:24:59 Author:Marydon 一.准备工作: 1.1 文件上传插件:uploadify: 1.2 文件上传所需jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar 1.3 将数据转成JSON对象需要jar包:commons-beanutils-1.8.3.jar.commons-collections-3.2.1.jar.commons-lang-2.6.jar.commons-log

模拟type=file;上传并预览图片

最近项目的会员中心,要做一个上传本地img并预览的效果.效果大概是这个样子.自己以前没做过:摸着石头过河总算完成了感觉有必要整理一下,写篇博客耍耍. 整体效果大概是这个样子的: 1.点击框框任何地方:弹出选择文件窗口: 2.选择后,再框框区域预览: 3.再次点击框框,更换图片. 下面说说整个实现的过程吧. html代码的结构大概是这样的.    <div class="imgitem secondImg">        <div class="u-add-

Jcrop+uploadify+php实现上传头像预览裁剪

最近由于项目需要,所以做了一个上传头像预览并且可以预览裁剪的功能,大概思路是上传的图片先保存到服务器,然后通过ajax从服务器获取到图片信息,再利用Jcrop插件进行裁剪,之后通过PHP获取到的四个裁切点的坐标进行裁剪. 首先看一下uploadify上传插件的API: uploader : uploadify.swf 文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框,默认值:uploadify.swf.script :   后台处理程序的相对路径 .默认值: