Ejemplo n.º 1
0
        public async Task <IActionResult> PostVideotag([FromBody] Videotag videotag)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.Videotag.Add(videotag);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (VideotagExists(videotag.Vid))
                {
                    return(new StatusCodeResult(StatusCodes.Status409Conflict));
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetVideotag", new { id = videotag.Vid }, videotag));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> PutVideotag([FromRoute] int id, [FromBody] Videotag videotag)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != videotag.Vid)
            {
                return(BadRequest());
            }

            _context.Entry(videotag).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!VideotagExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Upload(IFormCollection paras)
        {
            var auth = await HttpContext.AuthenticateAsync();

            if (!auth.Succeeded)
            {
                return(BadRequest(new { status = "not login" }));
            }

            var claim = User.FindFirstValue("User");
            int usid;

            if (!Int32.TryParse(claim, out usid))
            {
                return(BadRequest(new { status = "validation failed" }));
            }

            string pathToSave;
            string coverFileName = Guid.NewGuid().ToString() + '.' + paras.Files["cover"].FileName.Split('.').Last();
            string videoFileName = Guid.NewGuid().ToString() + '.' + paras.Files["video"].FileName.Split('.').Last();

            pathToSave = "wwwroot/images" + "/" + coverFileName;
            using (var stream = System.IO.File.Create(pathToSave))
            {
                await paras.Files["cover"].CopyToAsync(stream);
            }

            pathToSave = "wwwroot/videos" + "/" + videoFileName;
            using (var stream = System.IO.File.Create(pathToSave))
            {
                await paras.Files["video"].CopyToAsync(stream);
            }

            var videoPO = new Video();

            videoPO.Usid        = usid;
            videoPO.Cover       = coverFileName;
            videoPO.Path        = videoFileName;
            videoPO.Title       = paras["title"];
            videoPO.Description = paras["desc"];
            videoPO.CreateTime  = DateTime.Now;

            try
            {
                using (System.Diagnostics.Process pro = new System.Diagnostics.Process())
                {
                    pro.StartInfo.UseShellExecute       = false;
                    pro.StartInfo.ErrorDialog           = false;
                    pro.StartInfo.RedirectStandardError = true;

                    pro.StartInfo.FileName  = "../ffmpeg/tools/ffmpeg/bin/ffmpeg.exe";
                    pro.StartInfo.Arguments = " -i " + pathToSave;

                    pro.Start();
                    System.IO.StreamReader errorreader = pro.StandardError;
                    pro.WaitForExit(1000);

                    string result = errorreader.ReadToEnd();
                    if (!string.IsNullOrEmpty(result))
                    {
                        result = result.Substring(result.IndexOf("Duration: ") + ("Duration: ").Length, ("00:00:00").Length);
                        var v = result.Split(':');
                        int t = Convert.ToInt32(v[0]) * 3600 + Convert.ToInt32(v[1]) * 60 + Convert.ToInt32(v[2]);
                        videoPO.Time = t;
                    }
                }
            }
            catch { }

            try
            {
                await _context.Video.AddAsync(videoPO);

                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                return(BadRequest(new
                {
                    status = "Create failed.",
                    data = e.ToString()
                }));
            }

            try
            {
                foreach (var v in paras["tags"])
                {
                    var tag = await _context.Tag.FirstOrDefaultAsync(x => x.Name == v);

                    if (tag == null)
                    {
                        tag      = new Tag();
                        tag.Name = v;
                        await _context.Tag.AddAsync(tag);
                    }
                    var vt = new Videotag();
                    vt.TagId = tag.TagId;
                    vt.Vid   = videoPO.Vid;
                    await _context.Videotag.AddAsync(vt);
                }
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                return(BadRequest(new
                {
                    status = "Create tag failed.",
                    data = e.ToString()
                }));
            }

            try
            {
                foreach (var v in paras["catags"])
                {
                    var tag = await _context.Tag.FirstOrDefaultAsync(x => x.Name == v);

                    if (tag == null)
                    {
                        tag      = new Tag();
                        tag.Name = v;
                        await _context.Tag.AddAsync(tag);
                    }

                    if (tag.CatId == null)
                    {
                        var ncat = new Cat();
                        ncat.Name = v;
                        await _context.Cat.AddAsync(ncat);

                        tag.CatId = ncat.CatId;
                    }

                    var vt = new Videotag();
                    vt.TagId = tag.TagId;
                    vt.Vid   = videoPO.Vid;
                    await _context.Videotag.AddAsync(vt);
                }
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                return(BadRequest(new
                {
                    status = "Create catag failed.",
                    data = e.ToString()
                }));
            }

            return(Ok(new { status = "ok" }));
        }