使用MediaService在Umbraco 6.x中创建媒体项目

时间:2016-01-11 11:58:11

标签: asp.net umbraco umbraco6

我一直试图创建媒体项目并使用MediaService保存图片但没有成功。

简单来说,我想要达到的目的是:

  1. 获取所述图片的网址(我已经这样做了)。例如:" https://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/D%C3%BClmen%2C_Alte_Brennerei_L%C3%B6hning_--2015--_8664-8.jpg/800px-D%C3%BClmen%2C_Alte_Brennerei_L%C3%B6hning_--2015--_8664-8.jpg"

  2. 下载图片

  3. 将图像保存在媒体文件夹中,例如/media/1234124/image.jpg

  4. 获取图像位置" /media/1234124/image.jpg"

  5. 将图像位置指定给节点上的图像属性(如果可以保存图像,则很好)。

  6. 所有这一切都发生在控制器中。

    尝试使用WebClient将图像下载到byte []变量中并将其添加到MemoryStream中,但它并不喜欢它。

    非常感谢任何帮助

    编辑:添加了一些代码。评论的是我尝试的不同的东西,没有一个工作。一个月前我正在研究这个问题,所以不确定哪一个给了我最接近的结果。我记得newImage.SetValue(" umbracoFile",imageName,fileName);不喜欢有3个参数,但我在某处读到它应该接受它们。

    
    
    var mediaService = ApplicationContext.Current.Services.MediaService;
    var mediaFolder = Umbraco.TypedMediaAtRoot().DescendantsOrSelf("Folder").Where(x => x.Name == "DailyMotion Video Thumbs").First();
    
    .....
    
    string thumbUrl = theVideo.thumbnail_120_url;
    var indexOfLastSlash = thumbUrl.LastIndexOf("/");
    string imageName = thumbUrl.Substring(indexOfLastSlash+1, thumbUrl.Length - indexOfLastSlash - 1);
                        
    var newImage = mediaService.CreateMedia(String.Format("{0}_thumb", theVideo.id), mediaFolder.Id, "Image", 0);
    
    //byte[] fileContents = null;
    
    //try
    //{
    //    var req = (HttpWebRequest)WebRequest.Create(theVideo.thumbnail_120_url);
    
    //    using (var response = (HttpWebResponse)req.GetResponse())
    //    {
    //        using (var sr = new StreamReader(response.GetResponseStream()))
    //        {
    //            fileContents = sr.ReadToEnd();
    //        };
    //    };
    //}
    //catch (Exception e)
    //{
    
    //}
    
    WebClient wc = new WebClient();
    byte[] bytes = wc.DownloadData(theVideo.thumbnail_120_url);
    MemoryStream ms = new MemoryStream(bytes);
    System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
    
    //var tempImage = new Bitmap(ms);
    //var path = HttpContext.Current.Server.MapPath("~/media/dailymotionthumbs/" + newVideoNode.Id + "_" + imageName);
    //tempImage.Save(path, ImageFormat.Png);
    
    //FileStream fileStream = new FileStream(path, FileMode.Open);
    //var fileName = fileStream.Name;
    
    //byte[] buffer = System.IO.File.ReadAllBytes(System.IO.Path.GetFullPath(HttpContext.Current.Server.MapPath(fileContents)));
    //System.IO.MemoryStream strm = new MemoryStream(fileContents);
    
    //newImage.SetValue("umbracoFile", imageName, fileName);
    
    //mediaService.Save(newImage);
    
    ......
    
    
    

0 个答案:

没有答案