Sitecore:将来自 url 的图像保存在媒体库中

Sitecore: Saving images in media library from url

要下载图像并将其保存在媒体库中,我使用以下代码。我可以看到在媒体库中创建了一个项目,但它没有媒体。

using (WebClient webClient = new WebClient())
{
    byte[] data = webClient.DownloadData("https://myurl/images?id="+12345);
    Stream memoryStream = new MemoryStream(data);
    var options = new Sitecore.Resources.Media.MediaCreatorOptions
    {
        FileBased = false,
        OverwriteExisting = true,
        Versioned = true,
        IncludeExtensionInItemName = true,
        Destination = Factory.GetDatabase("master").GetItem(Settings.GetSetting("ProfilePicturesFolderItemId")).Paths.Path + "/" + "12345",
        Database = Factory.GetDatabase("master"),
        AlternateText = userProfileItem.Name
    };


    using (new SecurityDisabler())
    {
        var creator = new Sitecore.Resources.Media.MediaCreator();
        creator.CreateFromStream(memoryStream, v1ImageId, options);
    }
}

在媒体文件夹中,我可以看到名称为“12345”的项目,但没有媒体。

据我所知,当你在选项中传递 Destination 时,它必须包含项目的新名称,并且它应该与 CreateFromStream 方法调用中的第二个参数相同只是没有扩展名:

using (WebClient webClient = new WebClient())
{
    string filename = "SOMEFILENAME";
    string extension = ".png"; // or whatever is the extension

    byte[] data = webClient.DownloadData(imageUrl);
    Stream memoryStream = new MemoryStream(data);
    var options = new Sitecore.Resources.Media.MediaCreatorOptions
    {
        FileBased = false,
        OverwriteExisting = true,
        Versioned = true,
        IncludeExtensionInItemName = true,
        Destination = Factory.GetDatabase("master").GetItem(Settings.GetSetting("ProfilePicturesFolderItemId")).Paths.Path + "/" + filename,
        Database = Factory.GetDatabase("master"),
        AlternateText = userProfileItem.Name
    };


    using (new SecurityDisabler())
    {
        var creator = new Sitecore.Resources.Media.MediaCreator();
        creator.CreateFromStream(memoryStream, filename + extension, options);
    }
}