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

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

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='");
        }

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

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

这样就可以删除截取图片


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stranger。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值