public MediaItem UploadImageFile(string filePath, string newItemPath, string db)
        {
            FileStream file = new FileStream(filePath, FileMode.Open);

            MediaItem mediaItem;

            using (MemoryStream stream2 = new MemoryStream())
            {
                file.CopyTo(stream2);

                // Create the options
                MediaCreatorOptions options = new MediaCreatorOptions
                {
                    FileBased = false,
                    IncludeExtensionInItemName = false,
                    OverwriteExisting          = true,
                    Versioned   = false,
                    Destination = newItemPath,
                    Database    = Sitecore.Configuration.Factory.GetDatabase(db)
                };
                stream2.Flush();
                // upload to sitecore
                MediaCreator creator = new MediaCreator();
                mediaItem = creator.CreateFromStream(stream2, filePath, options);
            }

            return(mediaItem);
        }
Ejemplo n.º 2
0
        private void CreateNewMediaItemWithStreamAndLink(Stream stream, MediaItem currentItem, LinkField relatedField, Media originalMedia)
        {
            var mediaCreator = new MediaCreator();
            var options      = new MediaCreatorOptions
            {
                Versioned = false,
                IncludeExtensionInItemName = false,
                Database    = Factory.GetDatabase(ImageCompressionConstants.GlobalSettings.Database.Master),
                Destination = $"/sitecore/media library{currentItem.MediaPath}webp"
            };

            using (new SecurityModel.SecurityDisabler())
            {
                var newHiddenMedia = mediaCreator.CreateFromStream(stream, currentItem.Name + ".webp", options);

                newHiddenMedia.Editing.BeginEdit();
                newHiddenMedia.Appearance.Hidden = true;
                newHiddenMedia.Editing.EndEdit();

                currentItem.BeginEdit();
                relatedField.Value = string.Empty; //https://sitecore.stackexchange.com/questions/4104/how-to-programatically-update-a-general-link-field-in-a-custom-user-profille
                new LinkField(originalMedia.MediaData.MediaItem.InnerItem.Fields[ImageCompressionConstants.ImageFields.RELATED_IMAGE_FIELD])
                {
                    LinkType = "internal",
                    TargetID = newHiddenMedia.ID
                };
                currentItem.EndEdit();
            }
        }
Ejemplo n.º 3
0
        private static void ProcessMediaUpload(Stream content, Database db, string itemParam, string entryName, bool skipExisting = false)
        {
            var mediaItem = (MediaItem)db.GetItem(itemParam) ?? db.GetItem(itemParam.TrimStart('/', '\\')) ??
                            db.GetItem(ApplicationSettings.MediaLibraryPath + itemParam);

            if (mediaItem == null)
            {
                var filename = itemParam.TrimEnd('/', '\\').Replace('\\', '/');
                var dirName  = (Path.GetDirectoryName(filename) ?? string.Empty).Replace('\\', '/');
                if (!dirName.StartsWith(Constants.MediaLibraryPath))
                {
                    dirName = Constants.MediaLibraryPath + (dirName.StartsWith("/") ? dirName : "/" + dirName);
                }

                if (!String.IsNullOrEmpty(entryName))
                {
                    dirName += "/" + Path.GetDirectoryName(entryName).Replace('\\', '/');
                    filename = Path.GetFileName(entryName);
                }

                var mco = new MediaCreatorOptions
                {
                    Database    = db,
                    Versioned   = Settings.Media.UploadAsVersionableByDefault,
                    Destination = $"{dirName}/{Path.GetFileNameWithoutExtension(filename)}",
                };

                var mc = new MediaCreator();
                using (var ms = new MemoryStream())
                {
                    content.CopyTo(ms);
                    mc.CreateFromStream(ms, Path.GetFileName(filename), mco);
                }
            }
            else
            {
                if (skipExisting)
                {
                    return;
                }

                var mediaUri = MediaUri.Parse(mediaItem);
                var media    = MediaManager.GetMedia(mediaUri);

                using (var ms = new MemoryStream())
                {
                    content.CopyTo(ms);
                    using (new EditContext(mediaItem, SecurityCheck.Disable))
                    {
                        using (var mediaStream = new MediaStream(ms, media.Extension, mediaItem))
                        {
                            media.SetStream(mediaStream);
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public MediaItem ImportMedia(MediaItem originalItem)
        {
            if (originalItem == null)
            {
                return(null);
            }

            MediaItem mediaItem;

            using (MemoryStream stream2 = new MemoryStream())
            {
                var stream = originalItem.GetMediaStream();

                if (stream == null)
                {
                    return(null);
                }

                stream.CopyTo(stream2);

                var invalidChars = new List <string> {
                    "(", ")"
                };
                var newItemPath = originalItem.InnerItem.Paths.FullPath;
                foreach (var s in invalidChars)
                {
                    newItemPath = newItemPath.Replace(s, "");
                }

                // Create the options
                MediaCreatorOptions options = new MediaCreatorOptions();
                options.FileBased = false;
                options.IncludeExtensionInItemName = false;
                options.OverwriteExisting          = true;
                options.Versioned   = false;
                options.Destination = newItemPath;
                options.Database    = Sitecore.Configuration.Factory.GetDatabase("master");
                stream2.Flush();
                // upload to sitecore
                MediaCreator creator = new MediaCreator();
                mediaItem = creator.CreateFromStream(stream2, $"{originalItem.Name}.{originalItem.Extension}", options);
            }

            return(mediaItem);
        }
Ejemplo n.º 5
0
        public bool UploadFile(string userName, string password, string filePath, byte[] fileContent, string database,
                               string language)
        {
            if (!WebServiceSettings.IsEnabled(WebServiceSettings.ServiceRemoting))
            {
                return(false);
            }

            try
            {
                if (!Login(userName, password))
                {
                    return(false);
                }

                PowerShellLog.Info($"File '{filePath}' uploaded through remoting by user: '******'");

                var dirName = (Path.GetDirectoryName(filePath) ?? string.Empty).Replace('\\', '/');
                if (!dirName.StartsWith(Constants.MediaLibraryPath))
                {
                    dirName = Constants.MediaLibraryPath + (dirName.StartsWith("/") ? dirName : "/" + dirName);
                }

                var mco = new MediaCreatorOptions
                {
                    Database    = Factory.GetDatabase(database),
                    Language    = Language.Parse(language),
                    Versioned   = Settings.Media.UploadAsVersionableByDefault,
                    Destination = $"{dirName}/{Path.GetFileNameWithoutExtension(filePath)}"
                };

                var mc = new MediaCreator();
                using (var stream = new MemoryStream(fileContent))
                {
                    mc.CreateFromStream(stream, Path.GetFileName(filePath), mco);
                }
            }
            catch (Exception ex)
            {
                PowerShellLog.Error("Error during uploading file using PowerShell web service", ex);
                return(false);
            }
            return(true);
        }
        /// <summary>
        /// Private backer used by the other addMedia calls
        /// </summary>
        /// <param name="URL">URL path to the image to insert</param>
        /// <param name="Name">Name to use for the image</param>
        /// <param name="alt">Alt text to use for the image</param>
        /// <returns>GUID of the new image</returns>
        private static Item addMedia(string URL, string Name, string alt = "")
        {
            try
            {
                using (new SecurityDisabler())
                {
                    Sitecore.Resources.Media.MediaCreatorOptions options = new Sitecore.Resources.Media.MediaCreatorOptions();

                    options.Database  = Sitecore.Configuration.Factory.GetDatabase("master");
                    options.Language  = Sitecore.Globalization.Language.Parse(Sitecore.Configuration.Settings.DefaultLanguage);
                    options.Versioned = false;
                    Item mediaFolder = Sitecore.Context.Database.GetItem("{42DFBB81-6182-4EB4-BC28-D6EF535D84F3}");
                    options.Destination = string.Format("{0}/{1}", mediaFolder.Paths.FullPath, Name);
                    options.FileBased   = Sitecore.Configuration.Settings.Media.UploadAsFiles;

                    foreach (Item i in Sitecore.Data.Database.GetDatabase("master").SelectItems("/sitecore/Media Library/Common Sense Media Folder//*[@@templatename='Image'or @@templatename='Jpeg']"))
                    {
                        if (i.Fields["title"].ToString() == Name)
                        {
                            return(i);
                        }
                    }

                    MediaCreator creator = new MediaCreator();
                    MediaItem    image   = creator.CreateFromStream(getStream(URL), Name + getExtension(URL), options);

                    image.InnerItem.Editing.BeginEdit();

                    image.InnerItem["title"] = Name;
                    image.InnerItem["alt"]   = !string.IsNullOrEmpty(alt) ? alt : Name;

                    image.InnerItem.Editing.EndEdit();

                    PublishItem(image, options.Database);
                    PublishItem(image, Sitecore.Configuration.Factory.GetDatabase("web"));

                    return(image.InnerItem);
                }
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Ejemplo n.º 7
0
        public bool UploadFile(string userName, string password, string filePath, byte[] fileContent, string database,
                               string language)
        {
            if (!WebServiceSettings.ServiceEnabledRemoting)
            {
                return(false);
            }

            try
            {
                Login(userName, password);

                var dirName = (Path.GetDirectoryName(filePath) ?? string.Empty).Replace('\\', '/');
                if (!dirName.StartsWith(Constants.MediaLibraryPath))
                {
                    dirName = Constants.MediaLibraryPath + (dirName.StartsWith("/") ? dirName : "/" + dirName);
                }

                var mco = new MediaCreatorOptions();
                mco.Database    = Factory.GetDatabase(database);
                mco.Language    = Language.Parse(language);
                mco.Versioned   = Settings.Media.UploadAsVersionableByDefault;
                mco.Destination = string.Format("{0}/{1}", dirName, Path.GetFileNameWithoutExtension(filePath));

                var mc = new MediaCreator();
                using (var stream = new MemoryStream(fileContent))
                {
                    mc.CreateFromStream(stream, Path.GetFileName(filePath), mco);
                }
            }
            catch (Exception ex)
            {
                LogUtils.Error("Error during uploading file using PowerShell web service", ex);
                return(false);
            }
            return(true);
        }
Ejemplo n.º 8
0
        public bool UploadPhoto(Stream fileStream, string fileName)
        {
            try
            {
                var path = TranslateHelper.TranslateMessage(DictionaryKeys.PhotoSaveTo.Path) + fileName.Split('.')[0];
                using (var memoryStream = new MemoryStream())
                {
                    fileStream.CopyTo(memoryStream);
                    var mediaCreator = new MediaCreator();
                    var options      = new MediaCreatorOptions
                    {
                        Versioned = false,
                        IncludeExtensionInItemName = false,
                        Database    = Context.Database,
                        Destination = path
                    };

                    using (new SecurityDisabler())
                    {
                        var item        = mediaCreator.CreateFromStream(memoryStream, fileName, options);
                        var userProfile = Context.User.Profile;
                        if (userProfile != null)
                        {
                            userProfile.Icon = MediaManager.GetMediaUrl(item);
                            Context.User.Profile.Save();
                        }
                    }
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }
        private MediaItem ImportMediaItem(Stream mediaStream, string fileName, string newPath)
        {
            MediaItem mediaItem;

            using (MemoryStream stream2 = new MemoryStream())
            {
                mediaStream.CopyTo(stream2);

                // Create the options
                MediaCreatorOptions options = new MediaCreatorOptions();
                options.FileBased = false;
                options.IncludeExtensionInItemName = false;
                options.OverwriteExisting          = true;
                options.Versioned   = false;
                options.Destination = newPath;
                options.Database    = Sitecore.Configuration.Factory.GetDatabase("master");
                stream2.Flush();
                // upload to sitecore
                MediaCreator creator = new MediaCreator();
                mediaItem = creator.CreateFromStream(stream2, fileName, options);
            }

            return(mediaItem);
        }
Ejemplo n.º 10
0
        public MediaItem ImportImage(string url, string fileName, string newPath)
        {
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

            if (request == null)
            {
                return(null);
            }

            try {
                // download data
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                Stream          stream1  = response.GetResponseStream();
                MemoryStream    stream2  = new MemoryStream();
                stream1.CopyTo(stream2);

                // Create the options
                MediaCreatorOptions options = new MediaCreatorOptions();
                options.FileBased = false;
                options.IncludeExtensionInItemName = false;
                options.KeepExisting = false;
                options.Versioned    = false;
                options.Destination  = newPath;
                options.Database     = Sitecore.Configuration.Factory.GetDatabase("master");

                // upload to sitecore
                MediaCreator creator   = new MediaCreator();
                MediaItem    mediaItem = creator.CreateFromStream(stream2, fileName, options);

                response.Close();

                return(mediaItem);
            } catch (WebException ex) {
                return(null);
            }
        }
Ejemplo n.º 11
0
        private static void ProcessMediaUpload(Stream content, Database db, string path, bool skipExisting = false)
        {
            var guidPattern = @"(?<id>{[a-z0-9]{8}[-][a-z0-9]{4}[-][a-z0-9]{4}[-][a-z0-9]{4}[-][a-z0-9]{12}})";

            path = path.Replace('\\', '/').TrimEnd('/');
            path = (path.StartsWith("/") ? path : "/" + path);
            var originalPath = path;
            var dotIndex     = path.IndexOf(".", StringComparison.OrdinalIgnoreCase);

            if (dotIndex > -1)
            {
                path = path.Substring(0, dotIndex);
            }

            if (!path.StartsWith(Constants.MediaLibraryPath))
            {
                path = Constants.MediaLibraryPath + (path.StartsWith("/") ? path : "/" + path);
            }

            var mediaItem = (MediaItem)db.GetItem(path);

            if (mediaItem == null && Regex.IsMatch(originalPath, guidPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase))
            {
                var id = Regex.Match(originalPath, guidPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase).Value;
                mediaItem = db.GetItem(id);
            }

            if (mediaItem == null)
            {
                var fileName = Path.GetFileName(originalPath);
                var itemName = Path.GetFileNameWithoutExtension(path);
                var dirName  = (Path.GetDirectoryName(path) ?? string.Empty).Replace('\\', '/');

                if (String.IsNullOrEmpty(fileName))
                {
                    PowerShellLog.Warn($"The filename cannot be determined for the entry {fileName}.");
                    return;
                }

                var mco = new MediaCreatorOptions
                {
                    Database    = db,
                    Versioned   = Settings.Media.UploadAsVersionableByDefault,
                    Destination = $"{dirName}/{itemName}",
                };

                var mc = new MediaCreator();
                using (var ms = new MemoryStream())
                {
                    content.CopyTo(ms);
                    mc.CreateFromStream(ms, fileName, mco);
                }
            }
            else
            {
                if (skipExisting)
                {
                    return;
                }

                var mediaUri = MediaUri.Parse(mediaItem);
                var media    = MediaManager.GetMedia(mediaUri);

                using (var ms = new MemoryStream())
                {
                    content.CopyTo(ms);
                    using (new EditContext(mediaItem, SecurityCheck.Disable))
                    {
                        using (var mediaStream = new MediaStream(ms, media.Extension, mediaItem))
                        {
                            media.SetStream(mediaStream);
                        }
                    }
                }
            }
        }
Ejemplo n.º 12
0
        public bool UploadFile(string userName, string password, string filePath, byte[] fileContent, string database,
            string language)
        {
            if (!WebServiceSettings.ServiceEnabledRemoting)
            {
                return false;
            }

            try
            {
                Login(userName, password);

                var dirName = (Path.GetDirectoryName(filePath) ?? string.Empty).Replace('\\', '/');
                if (!dirName.StartsWith(Constants.MediaLibraryPath))
                {
                    dirName = Constants.MediaLibraryPath + (dirName.StartsWith("/") ? dirName : "/" + dirName);
                }

                var mco = new MediaCreatorOptions();
                mco.Database = Factory.GetDatabase(database);
                mco.Language = Language.Parse(language);
                mco.Versioned = Settings.Media.UploadAsVersionableByDefault;
                mco.Destination = string.Format("{0}/{1}", dirName, Path.GetFileNameWithoutExtension(filePath));

                var mc = new MediaCreator();
                using (var stream = new MemoryStream(fileContent))
                {
                    mc.CreateFromStream(stream, Path.GetFileName(filePath), mco);
                }
            }
            catch (Exception ex)
            {
                LogUtils.Error("Error during uploading file using PowerShell web service", ex);
                return false;
            }
            return true;
        }
        /// <summary>
        /// Private backer used by the other addMedia calls
        /// </summary>
        /// <param name="URL">URL path to the image to insert</param>
        /// <param name="Name">Name to use for the image</param>
        /// <param name="alt">Alt text to use for the image</param>
        /// <returns>GUID of the new image</returns>
        private static Item addMedia(string URL, string Name, string alt = "")
        {
            try
            {
                using (new SecurityDisabler())
                {
                    Sitecore.Resources.Media.MediaCreatorOptions options = new Sitecore.Resources.Media.MediaCreatorOptions();

                    options.Database = Sitecore.Configuration.Factory.GetDatabase("master");
                    options.Language = Sitecore.Globalization.Language.Parse(Sitecore.Configuration.Settings.DefaultLanguage);
                    options.Versioned = false;
                    Item mediaFolder = Sitecore.Context.Database.GetItem("{42DFBB81-6182-4EB4-BC28-D6EF535D84F3}");
                    options.Destination = string.Format("{0}/{1}", mediaFolder.Paths.FullPath, Name);
                    options.FileBased = Sitecore.Configuration.Settings.Media.UploadAsFiles;

                    foreach (Item i in Sitecore.Data.Database.GetDatabase("master").SelectItems("/sitecore/Media Library/Common Sense Media Folder//*[@@templatename='Image'or @@templatename='Jpeg']"))
                    {
                        if (i.Fields["title"].ToString() == Name)
                        {
                            return i;
                        }
                    }

                    MediaCreator creator = new MediaCreator();
                    MediaItem image = creator.CreateFromStream(getStream(URL), Name + getExtension(URL), options);

                    image.InnerItem.Editing.BeginEdit();

                    image.InnerItem["title"] = Name;
                    image.InnerItem["alt"] = !string.IsNullOrEmpty(alt) ? alt : Name;

                    image.InnerItem.Editing.EndEdit();

                    PublishItem(image, options.Database);
                    PublishItem(image, Sitecore.Configuration.Factory.GetDatabase("web"));

                    return image.InnerItem;
                }
            }
            catch (Exception e)
            {
                return null;
            }
        }
Ejemplo n.º 14
0
        protected void FireRowCommand(object sender, GridViewCommandEventArgs e)
        {
            string command = e.CommandName;

            if (command == "FireRowCommand")
            {
                string autoId = e.CommandArgument.ToString();

                if (FileUploadControl.HasFile)
                {
                    try
                    {
                        Item mediaItem = Helper.GetDatabase().GetItem(autoId);


                        string fileNameWithExtension = Path.GetFileName(FileUploadControl.FileName);
                        string extention             = Path.GetExtension(FileUploadControl.FileName);
                        string filename = fileNameWithExtension.Replace(extention, "");

                        MemoryStream memStream = new MemoryStream(FileUploadControl.FileBytes);

                        var options = new MediaCreatorOptions();
                        options.FileBased = false;
                        options.IncludeExtensionInItemName = false;
                        options.KeepExisting = true;
                        options.Versioned    = false;
                        options.Destination  = mediaItem.Parent.Paths.FullPath + "/" + filename;
                        options.Database     = Helper.GetDatabase();


                        var creator = new MediaCreator();

                        //Create a new item
                        var newItem = creator.CreateFromStream(memStream, fileNameWithExtension, options);
                        newItem.Editing.BeginEdit();
                        newItem.Fields["Title"].Value = filename;
                        newItem.Fields["Alt"].Value   = mediaItem.Fields["Alt"].Value;
                        newItem.Editing.EndEdit();

                        Item[] referrers = Helper.GetReferrersAsItems(ref mediaItem);

                        if (referrers != null)
                        {
                            Sitecore.Data.Items.MediaItem newMediaItem = new Sitecore.Data.Items.MediaItem(newItem);

                            foreach (Item referr in referrers)
                            {
                                var Fields = referr.Fields.Where(x => x.Value.Contains(mediaItem.ID.ToString()));
                                if (Fields != null && Fields.Count() > 0)
                                {
                                    referr.Editing.BeginEdit();

                                    foreach (var field in Fields)
                                    {
                                        if (field.Type == "Image")
                                        {
                                            Sitecore.Data.Fields.ImageField imageField = referr.Fields[field.Name];

                                            var alt    = imageField.Alt;
                                            var sclass = imageField.Class;
                                            imageField.Clear();
                                            imageField.MediaID = newMediaItem.ID;
                                            imageField.Alt     = alt;
                                            imageField.Class   = sclass;
                                        }
                                        else
                                        {
                                            referr.Fields[field.Name].Value = referr.Fields[field.Name].Value.Replace(mediaItem.ID.ToString(), newItem.ID.ToString());
                                        }
                                    }

                                    referr.Editing.EndEdit();
                                }
                            }
                        }


                        pnSuccessUpdate.Visible = true;
                    }
                    catch (Exception ex)
                    {
                        pnFailureUpdate.Visible = true;
                    }
                }
                else
                {
                    pnFailureUpdate.Visible = true;
                }
            }
        }
        /// <inheritdoc />
        public MediaItem UploadToMediaLibrary(SelectedImageModel selectedImage, string itemName, Language language)
        {
            var targetSitecorePath = Settings.GetSetting("Foundation.FotoWareExtensions.TargetPath", "/sitecore/media library/FotoWare");
            var tenantUrl          = Settings.GetSetting("Foundation.FotoWareExtensions.FotoWare.TenantUrl", string.Empty);

            if (!string.IsNullOrEmpty(tenantUrl))
            {
                if (!string.IsNullOrEmpty(targetSitecorePath))
                {
                    try
                    {
                        var webRequest = WebRequest.Create(selectedImage.ImageUrl);
                        using (var webResponse = webRequest.GetResponse())
                        {
                            using (var stream = webResponse.GetResponseStream())
                            {
                                using (var memoryStream = new MemoryStream())
                                {
                                    if (stream != null)
                                    {
                                        stream.CopyTo(memoryStream);
                                    }
                                    else
                                    {
                                        return(null);
                                    }

                                    var mediaCreator = new MediaCreator();
                                    var options      = new MediaCreatorOptions
                                    {
                                        Versioned = false,
                                        IncludeExtensionInItemName = false,
                                        Database      = _database,
                                        Destination   = string.Format("{0}/{1}", targetSitecorePath, itemName),
                                        AlternateText = selectedImage.Alt
                                    };

                                    using (new SecurityDisabler())
                                    {
                                        Item item = null;

                                        using (new EventDisabler())
                                        {
                                            item = mediaCreator.CreateFromStream(memoryStream,
                                                                                 Path.GetFileName(selectedImage.ImageUrl.LocalPath), options);
                                        }

                                        if (item != null)
                                        {
                                            return(UpdateMetaData(item.ID, selectedImage, tenantUrl, language));
                                        }

                                        return(null);
                                    }
                                }
                            }
                        }
                    }

                    catch (Exception e)
                    {
                        FotoWareFieldsLog.WriteToLog(
                            "--- Media Repository: FotoWare-Image could not be uploaded to sitecore media-library: ---", e);
                        return(null);
                    }
                }
                else
                {
                    FotoWareFieldsLog.WriteToLog("--- Media Repository: target-path-setting is not set in config-file. : ---");
                    return(null);
                }
            }
            else
            {
                FotoWareFieldsLog.WriteToLog("--- Media Repository: tenant-url-setting is not set in config-file. : ---");
                return(null);
            }
        }
Ejemplo n.º 16
0
        private static void ProcessMediaUpload(Stream content, Database db, string itemParam, string entryName, bool skipExisting = false)
        {
            var mediaItem = (MediaItem)db.GetItem(itemParam) ?? db.GetItem(itemParam.TrimStart('/', '\\')) ??
                            db.GetItem(ApplicationSettings.MediaLibraryPath + itemParam);

            if (mediaItem == null)
            {
                var filename = itemParam.TrimEnd('/', '\\').Replace('\\', '/');
                var dirName = (Path.GetDirectoryName(filename) ?? string.Empty).Replace('\\', '/');
                if (!dirName.StartsWith(Constants.MediaLibraryPath))
                {
                    dirName = Constants.MediaLibraryPath + (dirName.StartsWith("/") ? dirName : "/" + dirName);
                }

                if (!String.IsNullOrEmpty(entryName))
                {
                    dirName += "/" + Path.GetDirectoryName(entryName).Replace('\\', '/');
                    filename = Path.GetFileName(entryName);
                }

                var mco = new MediaCreatorOptions
                {
                    Database = db,
                    Versioned = Settings.Media.UploadAsVersionableByDefault,
                    Destination = $"{dirName}/{Path.GetFileNameWithoutExtension(filename)}",
                };

                var mc = new MediaCreator();
                using (var ms = new MemoryStream())
                {
                    content.CopyTo(ms);
                    mc.CreateFromStream(ms, Path.GetFileName(filename), mco);
                }
            }
            else
            {
                if (skipExisting) return;

                var mediaUri = MediaUri.Parse(mediaItem);
                var media = MediaManager.GetMedia(mediaUri);

                using (var ms = new MemoryStream())
                {
                    content.CopyTo(ms);
                    using (new EditContext(mediaItem, SecurityCheck.Disable))
                    {
                        using (var mediaStream = new MediaStream(ms, media.Extension, mediaItem))
                        {
                            media.SetStream(mediaStream);
                        }
                    }
                }
            }
        }