我一直试图创建媒体项目并使用MediaService保存图片但没有成功。
简单来说,我想要达到的目的是:
获取所述图片的网址(我已经这样做了)。例如:" 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"
下载图片
将图像保存在媒体文件夹中,例如/media/1234124/image.jpg
获取图像位置" /media/1234124/image.jpg"
将图像位置指定给节点上的图像属性(如果可以保存图像,则很好)。
所有这一切都发生在控制器中。
尝试使用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);
......