コード例 #1
0
        public IActionResult UploadVideoforPostman([FromForm] IFormFile video,
                                                   [FromForm] string title, [FromForm] int sectionId)
        {
            if (!_sectionRepository.SectionExists(sectionId))
            {
                return(NotFound());
            }

            var    section        = _sectionRepository.GetSection(sectionId);
            string uniqueFileName = null;

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            string uploadsfolder = Path.Combine(_hostingEnvironment.WebRootPath, "Videos");

            uniqueFileName = Guid.NewGuid().ToString() + "_" + video.FileName;

            string filePath = Path.Combine(uploadsfolder, uniqueFileName);

            using (FileStream fileStream = new FileStream(filePath,
                                                          FileMode.Create))
            {
                video.CopyTo(fileStream);
            }

            Video newVideo = new Video
            {
                Title     = title,
                VideoPath = uniqueFileName,
                Section   = section
            };

            if (!_videoRepository.CreateVideo(newVideo))
            {
                return(BadRequest());
            }

            return(CreatedAtRoute("GetVideo", new { videoId = newVideo.Id }, video));
        }
コード例 #2
0
ファイル: VideoService.cs プロジェクト: StasVitAlex/Video
        public async Task <long> CreateVideo(long userId, CreateVideoVm model, string basePath)
        {
            if (!await _foldersRepository.UserHasAccessToFolder(model.UserId, model.FolderId))
            {
                throw new AccessDeniedException();
            }
            model.LinkCode = StringExtensions.GenerateUniqueRandomToken();
            model.LinkUrl  = $"{_commonSettings.ApplicationUrl}/api/video/stream/{model.LinkCode}";
            var videoId = await _videoRepository.CreateVideo(userId, _mapper.Map <CreateVideoDto>(model));

            var userVideoFolder = Path.Combine(basePath, _commonSettings.UserVideosFolder);

            if (!Directory.Exists(userVideoFolder))
            {
                Directory.CreateDirectory(userVideoFolder);
            }
            var videoFileDestinationPath = Path.Combine(userVideoFolder, $"{videoId}{model.Extension}");

            await using (var fileStream = new FileStream(videoFileDestinationPath, FileMode.Create))
            {
                await model.VideoFile.CopyToAsync(fileStream);
            }

            var videoImagesFolder = Path.Combine(basePath, _commonSettings.VideoImagesFolder);

            if (!Directory.Exists(videoImagesFolder))
            {
                Directory.CreateDirectory(videoImagesFolder);
            }
            var thumbnailDestinationPath = Path.Combine(videoImagesFolder, $"{videoId}.png");

            VideoHelpers.GenerateThumbNail(basePath, videoFileDestinationPath, thumbnailDestinationPath);
            var duration = VideoHelpers.GetVideoDuration(basePath, videoFileDestinationPath);
            await _videoRepository.UpdateVideoInfo(new UpdateVideoInfoDto { Duration = duration, ThumbnailUrl = $"{_commonSettings.ApplicationUrl}/api/video/thumbnail/{videoId}", Id = videoId, LocationUrl = videoFileDestinationPath });

            return(videoId);
        }
コード例 #3
0
 public void CreateVideo(string name, string genre)
 {
     videoRepository.CreateVideo(name, genre);
 }
コード例 #4
0
ファイル: VideoController.cs プロジェクト: Tubbz-alt/Vodigi
        public ActionResult Create(Video video)
        {
            try
            {
                if (Session["UserAccountID"] == null)
                {
                    return(RedirectToAction("Validate", "Login"));
                }
                User user = (User)Session["User"];
                ViewData["LoginInfo"] = Utility.BuildUserAccountString(user.Username, Convert.ToString(Session["UserAccountName"]));
                if (user.IsAdmin)
                {
                    ViewData["txtIsAdmin"] = "true";
                }
                else
                {
                    ViewData["txtIsAdmin"] = "false";
                }

                if (ModelState.IsValid)
                {
                    // Set NULLs to Empty Strings
                    video           = FillNulls(video);
                    video.AccountID = Convert.ToInt32(Session["UserAccountID"]);
                    Guid fileguid = Guid.NewGuid();

                    if (Request.Form["lstFile"] != null && !String.IsNullOrEmpty(Request.Form["lstFile"].ToString().Trim()))
                    {
                        video.OriginalFilename = Request.Form["lstFile"].ToString().Trim();
                        if (video.OriginalFilename != "0")
                        {
                            string extension = video.OriginalFilename.Substring(video.OriginalFilename.LastIndexOf('.'));
                            video.StoredFilename = fileguid + extension;
                        }
                        else
                        {
                            video.OriginalFilename = String.Empty;
                        }
                    }
                    else
                    {
                        video.OriginalFilename = String.Empty;
                        video.StoredFilename   = String.Empty;
                    }

                    string validation = ValidateInput(video);
                    if (!String.IsNullOrEmpty(validation))
                    {
                        ViewData["ValidationMessage"] = validation;
                        ViewData["FileList"]          = new SelectList(BuildFileList(Request.Form["lstFile"].ToString().Trim()), "Value", "Text", video.OriginalFilename);
                        ViewData["VideoURL"]          = selectedfile;
                        return(View(video));
                    }
                    else
                    {
                        try
                        {
                            // Move the video
                            string oldvideo = Server.MapPath(@"~/UploadedFiles");
                            if (!oldvideo.EndsWith(@"\"))
                            {
                                oldvideo += @"\";
                            }
                            oldvideo += Convert.ToString(Session["UserAccountID"]) + @"\Videos\" + video.OriginalFilename;

                            string newvideo = Server.MapPath(@"~/Media");
                            if (!newvideo.EndsWith(@"\"))
                            {
                                newvideo += @"\";
                            }
                            newvideo += Convert.ToString(Session["UserAccountID"]) + @"\Videos\" + video.StoredFilename;

                            System.IO.File.Copy(oldvideo, newvideo);
                            System.IO.File.Delete(oldvideo);
                        }
                        catch
                        {
                            ViewData["ValidationMessage"] = "Failed to copy file.";
                            ViewData["FileList"]          = new SelectList(BuildFileList(Request.Form["lstFile"].ToString().Trim()), "Value", "Text", video.OriginalFilename);
                            ViewData["VideoURL"]          = selectedfile;
                            return(View(video));
                        }

                        repository.CreateVideo(video);

                        CommonMethods.CreateActivityLog((User)Session["User"], "Video", "Add",
                                                        "Added video '" + video.VideoName + "' - ID: " + video.VideoID.ToString());

                        return(RedirectToAction("Index"));
                    }
                }

                return(View(video));
            }
            catch (Exception ex)
            {
                Helpers.SetupApplicationError("Video", "Create POST", ex.Message);
                return(RedirectToAction("Index", "ApplicationError"));
            }
        }
コード例 #5
0
 public Video Create(Video video)
 {
     return(_videoRepository.CreateVideo(video));
 }
コード例 #6
0
 public Video CreateVideo(Video video)
 {
     return(_videoRepo.CreateVideo(video));
 }