Upload video from custom code
What is missing from this code, every time I upload a wmv file it comes back with "Fail to open media"
private void uploadVideo(Telerik.Sitefinity.Modules.Libraries.LibrariesManager libManager, Telerik.Sitefinity.Libraries.Model.VideoLibrary videoLib, Telerik.Web.UI.UploadedFile uploadedFile) try if (libManager != null && videoLib != null && uploadedFile != null) // Do a look up for existing video Telerik.Sitefinity.Libraries.Model.Video videoToModify = libManager.GetVideos().Where(d => d.Title == uploadedFile.GetNameWithoutExtension().ToString() && d.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live).OrderByDescending(d => d.LastModified).FirstOrDefault(); if (videoToModify == null) // No videos were found, create a new one. Telerik.Sitefinity.Libraries.Model.Video video = libManager.CreateVideo(); //set the newly created video video.Parent = videoLib; // Sets the Library Name video.Title = uploadedFile.GetNameWithoutExtension(); // Sets the file name video.Visible = true; // Sets visible flag video.Author = HttpContext.Current.User.Identity.Name.ToString(); // set the author name video.Description = uploadedFile.GetNameWithoutExtension(); // Set the description video.UrlName = uploadedFile.GetNameWithoutExtension(); // sets the page url video.ApprovalWorkflowState = "Published"; // Sets the video to publish instead of draft by default if (video.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Temp) video.Status = Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live; byte[] buffer = new byte[uploadedFile.InputStream.Length]; long position = 0; int currentByte = uploadedFile.InputStream.ReadByte(); while (currentByte != -1) buffer[position++] = (byte)currentByte; currentByte = uploadedFile.InputStream.ReadByte(); System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer); //upload the video content libManager.Upload(video, ms, this.fileUpload.UploadedFiles[0].GetExtension()); // the item is in Draft State. We hae to call Publish method to publish it. libManager.Publish(video); libManager.SaveChanges(); Hi,
The following code worked for me:
private void uploadVideo(VideoLibrary videoLib, UploadedFile uploadedFile) LibrariesManager libManager = LibrariesManager.GetManager(); libManager.Provider.SuppressSecurityChecks = true; Telerik.Sitefinity.Libraries.Model.Video newVid = libManager.CreateVideo(); newVid.Parent = videoLib; var vidName = uploadedFile.GetNameWithoutExtension(); newVid.Title = vidName; newVid.UrlName = vidName; libManager.Upload(newVid, uploadedFile.InputStream, uploadedFile.GetExtension()); libManager.RecompileItemUrls<Telerik.Sitefinity.Libraries.Model.Video>(newVid); libManager.Publish(newVid); libManager.SaveChanges();Thank you Lev!!!