コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: XMLRPCRequest.cs プロジェクト: saiesh86/TravelBlog
        /// <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;
        }
コード例 #3
0
        /// <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));
            }
        }