@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
@Styles.Render("~/Content/MUI/css/MUICore")
@Styles.Render("~/Content/MUI/css/MUIALL")
<link href="~/Content/bootstrap.css" rel="stylesheet" />
<link href="~/Content/fileinput.css" rel="stylesheet" />
<style type="text/css">
label {
font-size: small;
font-weight: normal;
padding: 4% 0 0 6% !important;
}
</style>
</head>
<body>
<div>
<label>
<input type="file" id="file" multiple class="projectfile" data-overwrite-initial="false" data-min-file-count="1" />
</label>
<input id="Imgurl" hidden="hidden" />
<input id="Imgname" hidden="hidden" />
</div>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/MUIALL")
<script src="~/Content/Scripts/bootstrap.js"></script>
<script src="~/Content/Scripts/fileinput.js"></script>
<script src="~/Content/Scripts/fileinput_locale_zh.js"></script>
<script type="text/javascript" charset="utf-8">
$(function () {
var List = [];
var imgulr = "";
$("#file").fileinput({
language: 'zh',
uploadUrl: '../PlayVideo/SaveFile', //后台处理链接
uploadExtraData: function (previewId, index) { //额外参数的关键点
var obj = {};
obj.sqlpath = imgulr;
console.log(obj);
return obj;
},
uploadAsync: false,
overwriteInitial: false,
dropZoneEnabled: false,
showPreview: true,
showRemove: false,
showUpload: false,
}).on('filepreajax', function (event, previewId, index) {
imgulr = $("#Imgurl").val();
}).on("fileclear", function (event, data, msg) {
List = [];
$("#Imgurl").val("");
}).on('filebatchselected', function (event, files) {//选中文件事件
$(this).fileinput("upload");
}).on("filebatchuploadsuccess", function (event, data, previewId, index) {
$("#Imgurl").val(data.response);
var name = data.response.split(';'); //文件上传成功返回的文件名,可返回自定义文件名
List = [];
for (var i = 0; i < name.length - 1; i++) {
var newname = name[i].split('/');
List.push({ FileName: "" + newname[2] + "" });
}
})
$("#file").fileinput({ 'showUpload': false, 'previewFileType': 'any' });
var opinionID = "";
var urlhref = window.location.href;
if (urlhref.indexOf("?") >= 0) {
var urlt = urlhref.split("?");
var gets = urlt[1].split("&");
for (var i = 0; i < gets.length; i++) {
var get = gets[i].split("=");
if (get[0] == "opinionID") {
opinionID = get[1];
break;
}
}
}
});
</script>
</body>
</html>

上面是前端页面,下面添加后台处理程序

/// <summary>
/// 保存上传文件
/// </summary>
/// <param name="sqlpath">路径</param>
/// <returns></returns>
public ActionResult SaveFile(string sqlpath)
{
//获取前端传过来的文件
var files = HttpContext.Request.Files;
//设置上传文件存储的文件名
string str = "files";
//获取当前程序运行的物理地址
string uploadPath = HttpRuntime.AppDomainAppPath.ToString() + str + "\\";
for (int i = ; i < files.Count; i++)
{
HttpPostedFileBase file = files[i];
if (file != null)
{
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);
}
string name = file.FileName;
string ext = Path.GetExtension(name);
string newname = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ext;
sqlpath = "../" + str + "/" + newname;
string fullName = uploadPath + newname;
file.SaveAs(fullName);
//string len1 = GetMediaTimeLen(fullName);
//获取视频的秒数
int videoSeconds = GetMediaTimeLenSecond(fullName);
//往数据库里面进行存储
videoSave vs = new videoSave();
vs.guid = Guid.NewGuid().ToString();
vs.videoPath = sqlpath;
vs.videoLengthTime = videoSeconds;
vs.videoHasTime = ;
vs.videoStatus = "未观看";
db.Entry(vs).State = EntityState.Added;
db.SaveChanges();
}
}
return Json(sqlpath, JsonRequestBehavior.AllowGet);
}

下面这个是获取视频文件总时长的方法,按照秒数进行计算,计算出一共多少秒,返回   “15”   类似的数据  注:这个例子是使用的这个方法

/// <summary>
/// 获取视频的秒数
/// </summary>
/// <param name="path">该视频对应的路径</param>
/// <returns></returns>
public static int GetMediaTimeLenSecond(string path)
{
System.Type objType = System.Type.GetTypeFromProgID("Shell.Application");
dynamic shell = System.Activator.CreateInstance(objType);
//文件路径
dynamic folder = shell.NameSpace(path.Substring(, path.LastIndexOf("\\")));
//文件名称
dynamic folderitem = folder.ParseName(path.Substring(path.LastIndexOf("\\") + ));
string len;
if(Environment.OSVersion.Version.Major>=)
{
len = folder.GetDetailsOf(folderitem, );
}
else
{
len = folderitem.GetDetailsOf(folderitem, );
}
string[] str = len.Split(new char[] { ':' });
int sum = ;
sum = int.Parse(str[]) * * + int.Parse(str[]) * + int.Parse(str[]);
return sum;
}

再添加一个获取视频文件总时长的方法,会返回“00:00:12”类似的数据

/// <summary>
/// 获取视频时长
/// </summary>
/// <param name="path">该视频对应的路径</param>
/// <returns></returns>
public static string GetMediaTimeLen(string path)
{
System.Type objType = System.Type.GetTypeFromProgID("Shell.Application");
dynamic shell = System.Activator.CreateInstance(objType);
//文件路径
dynamic folder = shell.NameSpace(path.Substring(, path.LastIndexOf("\\")));
//文件名称
dynamic folderitem = folder.ParseName(path.Substring(path.LastIndexOf("\\") + ));
if(Environment.OSVersion.Version.Major>=)
{
return folder.GetDetailsOf(folderitem, );
}
else
{
return folder.GetDetailsOf(folderitem, );
}
}

运行结果:

存储到数据库中:

新人笔记,防止以后遗忘,如有问题,请留言,不胜感激

 

利用bootstrap上传视频文件,mvc做后台处理的更多相关文章

  1. WCF利用Stream上传大文件

    WCF利用Stream上传大文件 转自别人的文章,学习这个例子,基本上wcf也算入门了,接口用法.系统配置都有了 本文展示了在asp.net中利用wcf的stream方式传输大文件,解决了大文件上传问 ...

  2. 2.6 利用FTP上传所有文件

    利用FTP上传所有文件 import os,ftptools class UploadAll(ftptools.FtpTools): #继承上一篇写的Ftptools '''upload an ent ...

  3. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据

    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案   ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...

  4. chrome 和IE 上传的文件,在net 后台取值Request.Form.Files[0].FileName 的不同

    chrome 和IE 上传的文件,在net 后台取值Request.Form.Files[0].FileName 的不同 chrome 获得的是不含路径的纯文件名 IE获得的是含路径的文件名

  5. Asp.net MVC利用WebUploader上传大文件出现404解决办法。

    刚开始我上传小文件都是比较顺利的,但是上传了一个大文件大约有200M的压缩包就不行了.在chrome里面监视发现网络状态是404,我分析可能不是WebUploader的限制,应该是WebConfig限 ...

  6. 以springMVC为例获取上传视频文件时长

    毕设项目是一个在线学习系统,教师用户有上传视频的功能,在答辩之前赶了一个demo出来,好多功能都写死了,比如课程学习进度就是被我写死在前端的一个变量,最近导师要我把项目打包发给他,这才心慌慌赶紧把这些 ...

  7. plupload分片上传视频文件源码展示

    plupload分片上传视频文件目录结构如下: |- images//视频上传小图片 |-js// plupload js文件 |-uploads//视频文件存放文件夹 里面是按日期存放 |-ajax ...

  8. java上传视频文件

    需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...

  9. 第五十三篇、OC利用AFN上传视频到服务器

    整体思路已经清楚,拿到视频资源,先转为mp4,写进沙盒,然后上传,上传成功后删除沙盒中的文件. 本地拍摄的视频,上传到服务器: //视频转换为MP4 //转码操作... _hud.mode = MBP ...

随机推荐

  1. React Native 首次加载白屏优化

    RN首次加载都会有个白屏过程,一般都会有500ms+的白屏时间,原生页面开发同样的页面会能够快速显示而在RN页面中有个明显的等待过程,这个会影响用户体验. 1.使用过渡页面 简单处理可以在白屏过程中加 ...

  2. python作业(第十一周)基于RabbitMQ rpc实现的主机管理

    作业需求: 可以对指定机器异步的执行多个命令 例子: >>:run "df -h" --hosts 192.168.3.55 10.4.3.4 task id: 453 ...

  3. 【c++】多层次继承类对象的构造函数参数的传递方法

    #include <iostream.h> //基类CBase class CBase { int a; public: CBase(int na) { a=na; cout<< ...

  4. python版本安装

    目的 本文目的在于,对于不熟悉Python的人,教你: 1. 从哪里找到 可以下载到 各种版本的 包括Python 2.x和Python 3.x的 最新版本的 Python. 高手请无视之. 2.以及 ...

  5. 41-json.decoder.JSONDecodeError: Invalid control character at: line 6894 column 12 (char 186418)

    在使用python中将单词本的单词用正则匹配成字典后,以json存储,仪json读入,但是一直报错: 原因是: 正则处理后的数据有的出了点问题,导致一个字典的 有多个相同的键!!!,则肯定会报错啊!! ...

  6. c语言定义函数指针和typedef简写

    二种方法来定义函数指针 #include<stdio.h> #include<stdlib.h> #include<Windows.h> int add(int a ...

  7. vuex入门文档

    如果你在使用 vue.js , 那么我想你可能会对 vue 组件之间的通信感到崩溃 . 我在使用基于 vue.js 2.0 的UI框架 ElementUI 开发网站的时候 , 就遇到了这种问题 : 一 ...

  8. source Insight工程的简单使用

    本文以管理虚拟机里面的uboot为例: 1.选择project->New project->选择工程路径,假设为D:\uboot:->project has its own conf ...

  9. 2018.10.18 poj2187Beauty Contest(旋转卡壳)

    传送门 旋转卡壳板子题. 就是求凸包上最远点对. 直接上双指针维护旋转卡壳就行了. 注意要时刻更新最大值. 代码: #include<iostream> #include<cstdi ...

  10. POJ 3320 Jessica's Reading Problem (滑动窗口)

    题意:给定一个序列,求一个最短区间,使得这个区间包含所有的种类数. 析:最近刚做了几个滑动窗口的题,这个很明显也是,肯定不能暴力啊,时间承受不了啊,所以 我们使用滑动窗口来解决,要算出所有的种数,我用 ...