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