/// <summary> /// Creates a Metaweblog Media object from the XML struct /// </summary> /// <param name="node"> /// XML contains a Metaweblog MediaObject Struct /// </param> /// <returns> /// Metaweblog MediaObject Struct Obejct /// </returns> private static MWAMediaObject GetMediaObject(XmlNode node) { var name = node.SelectSingleNode("value/struct/member[name='name']"); var type = node.SelectSingleNode("value/struct/member[name='type']"); var bits = node.SelectSingleNode("value/struct/member[name='bits']"); var temp = new MWAMediaObject { name = name == null ? string.Empty : name.LastChild.InnerText, type = type == null ? "notsent" : type.LastChild.InnerText, bits = Convert.FromBase64String(bits == null ? string.Empty : bits.LastChild.InnerText) }; return(temp); }
/// <summary> /// Creates a Metaweblog Media object from the XML struct /// </summary> /// <param name="node"> /// XML contains a Metaweblog MediaObject Struct /// </param> /// <returns> /// Metaweblog MediaObject Struct Obejct /// </returns> private static MWAMediaObject GetMediaObject(XmlNode node) { var name = node.SelectSingleNode("value/struct/member[name='name']"); var type = node.SelectSingleNode("value/struct/member[name='type']"); var bits = node.SelectSingleNode("value/struct/member[name='bits']"); var temp = new MWAMediaObject { name = name == null ? string.Empty : name.LastChild.InnerText, type = type == null ? "notsent" : type.LastChild.InnerText, bits = Convert.FromBase64String(bits == null ? string.Empty : bits.LastChild.InnerText) }; return temp; }
/// <summary> /// metaWeblog.newMediaObject method /// </summary> /// <param name="blogId"> /// always 1000 in BlogEngine since it is a singlar blog instance /// </param> /// <param name="userName"> /// login username /// </param> /// <param name="password"> /// login password /// </param> /// <param name="mediaObject"> /// struct with media details /// </param> /// <param name="request"> /// The HTTP request. /// </param> /// <returns> /// struct with url to media /// </returns> internal MWAMediaInfo NewMediaObject( string blogId, string userName, string password, string methodName, MWAMediaObject mediaObject, HttpContext request) { string virtualUploadPath = GetUserUploadVirtualPath(); if (virtualUploadPath.Length == 0) { throw new MetaWeblogException("11", MetaweblogResources.AccessDenied); } string ext = Path.GetExtension(mediaObject.name); if (!SiteUtils.IsAllowedUploadBrowseFile(ext, allowedExtensions)) { throw new MetaWeblogException("11", MetaweblogResources.FileExtensionNotAllowed); } try { //var serverPath = virtualUploadPath; var fileName = Path.GetFileName(mediaObject.name).ToCleanFileName(); IFileSystem fileSystem = GetFileSystem(); if (!fileSystem.FolderExists(virtualUploadPath)) { fileSystem.CreateFolder(virtualUploadPath); } if (fileSystem.FileExists(virtualUploadPath + fileName)) { // Find unique fileName for (var count = 1; count < 30000; count++) { var tempFileName = fileName.Insert(fileName.LastIndexOf('.'), string.Format("_{0}", count)); if (fileSystem.FileExists(virtualUploadPath + tempFileName)) { continue; } fileName = tempFileName; break; } } //this is needed for Blogsy apparently or it crashes when uploading images if (methodName == "wp.uploadFile") { fileName = "wpid-" + fileName; } // Save File //using (var fs = new FileStream(serverPath + fileName, FileMode.Create)) using (Stream fs = fileSystem.GetWritableStream(virtualUploadPath + fileName)) { using (var bw = new BinaryWriter(fs)) { bw.Write(mediaObject.bits); } } // Set Url var rootUrl = imageSiteRoot + virtualUploadPath.Replace("~", string.Empty); //var rootUrl = virtualUploadPath.Replace("~", string.Empty); var mediaInfo = new MWAMediaInfo(); mediaInfo.file = fileName; //mediaInfo.file = mediaObject.name; //mediaInfo.type = IOHelper.GetMimeType(Path.GetExtension(fileName)); mediaInfo.type = mediaObject.type; mediaInfo.url = rootUrl + fileName; return mediaInfo; } catch (Exception ex) { log.Error(ex); throw new MetaWeblogException("12", string.Format("NewMediaObject failed. Error: {0}", ex.Message)); } }