Asp.net MVC4 中的视频上传和视频截图,以及删除上传文件

来源:互联网 发布:如何安装vb 编辑:程序博客网 时间:2024/06/05 10:02

这两天在做一个视频上传的同时,给视频截张图。百度搜索了很多,总结了一个适合自己。废话不说了,如下:

Controller中的代码:

<pre name="code" class="csharp">//视频上传public ActionResult videoAdd()        {            return View();        }        public ActionResult MultiUpload(HttpPostedFileBase files)        {                             if (files != null)                {                    if (files.ContentLength > 0)                    {                        string filePath = files.FileName;      //获得文件的完整路径名                                                               //以年月日时分秒-毫秒将文件重新命名                        string filename2 = DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss-fffffff");                        string filename = filename2 + filePath.Substring(filePath.LastIndexOf('.'), filePath.Length - filePath.LastIndexOf('.'));                                                               //设定上传路径(绝对路径)                        string upPath = Server.MapPath("~/Uploads/") + filename;                                                                                                               //文件上传到绝对路径                                           files.SaveAs(upPath);                                                               //设定数据库的存储路径                        string savePath = "\\Uploads\\" + filename;                                              CreateImg(upPath,filename2);                                                                                     //下面是把相对路径保存到数据库表中                        Information info = new Information();                        files = Request.Files["files"];                        info.title = files.FileName;                                                info.content = savePath;                        db.Information.Add(info);                        db.SaveChanges();                    }                }                return RedirectToAction("videoIndex");                                    }//视频截图private string CreateImg(string fileName,string filename2)        {            string ffmpeg = Server.MapPath("~/Uploads/ffmpeg.exe");            string vFileName = fileName;            string FlvImgSize = "240x180";            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;                        string flv_img = filename2 + ".png";            string flv_img_p = System.Web.HttpContext.Current.Server.MapPath("~/Uploads/" + flv_img);            startInfo.Arguments = " -i " + vFileName + "  -y  -f  image2   -ss 2 -vframes 1  -s   " + FlvImgSize + "  " + flv_img_p;            try {  System.Diagnostics.Process.Start(startInfo); }            catch { return ""; }            if (System.IO.File.Exists(flv_img_p)) { return flv_img; }            return "";        }//删除上传文件public ActionResult videoDelete(FormCollection from)        {            string str = from["select"];            string[] strDelete = str.Split(',');            foreach (var i in strDelete)            {                if (i != "false")                {                    decimal id = decimal.Parse(i);                    Informationinfo = db.Information.Find(id);                    string videoPath = Server.MapPath(info.content);//转换物理路径(视频)                    if (System.IO.File.Exists(videoPath))//判断文件是否存在                    {                        System.IO.File.Delete(videoPath);//执行IO文件删除视频,需引入命名空间System.IO;                    }                                        string[] img = info.content.Split('.');//截取字符串                    string image=img[0]+".png";            //图片地址                    string imgPath = Server.MapPath(image);                    if (System.IO.File.Exists(imgPath))//判断文件是否存在                    {                        System.IO.File.Delete(imgPath);//执行IO文件删除图片,需引入命名空间System.IO;                    }                    db.LRS_INFO_MGT.Remove(info);                }            }                        db.SaveChanges();            return Content("<script>alert('删除成功。');window.location.href='");        }

上面的删除图片,因为数据库表中存放的是视频相对路径,没有图片的相对路径。所以删除图片时,先要找到他的存放路径。

在截图时,我把图片的名称(不包括扩展名)设为和视频名称一样,并且存放在同一个文件夹下,所以可以通过截取 视频的相对路径来得到图片的相对路径。

这样就可以删除截取图片




1 0
原创粉丝点击