2017-04-07 12 views
1

メディアライブラリに画像をダウンロードして保存するには、次のコードを使用しています。アイテムがメディアライブラリに作成されていますが、メディアはありません。Sitecore: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を渡すときに私は、覚えているから

答えて

1

は、それは項目の新しい名前を含める必要があり、それだけで拡張子なし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); 
    } 
} 
+0

私はエクステンションを与えようとしたときにエラーが発生しています。このコード 'creator.CreateFromStream(memoryStream、filename + extension、options);'はエラーを生成します: 'Parameter is not valid。 '。私が拡張を取り除くと、エラーもなくなります。 – Kamran

+0

ファイル名と拡張子は何ですか? –

+0

イメージは.jpgであり、ファイル名は12345です。私はあなたのコードをそのまま使用していません。私は21345としてファイル名を持っているので、私はそれをテストしています。 – Kamran

関連する問題