如何使用ASP FileUpload控件以代码形式将文件上载到Sitecore媒体库?

如何使用ASP FileUpload控件以代码形式将文件上载到Sitecore媒体库?,sitecore,sitecore6,sitecore-media-library,Sitecore,Sitecore6,Sitecore Media Library,这是我尝试过的,但似乎不起作用。我没有收到任何错误,但它似乎也没有将文件添加到媒体库中 使用(新Sitecore.SecurityModel.SecurityDisabler()) { if(myFileControl.HasFile) { MediaCreatorOptions _options=新的MediaCreatorOptions(); _options.Database=Factory.GetDatabase(“master”); _options.filebase=false; _

这是我尝试过的,但似乎不起作用。我没有收到任何错误,但它似乎也没有将文件添加到媒体库中

使用(新Sitecore.SecurityModel.SecurityDisabler())
{
if(myFileControl.HasFile)
{
MediaCreatorOptions _options=新的MediaCreatorOptions();
_options.Database=Factory.GetDatabase(“master”);
_options.filebase=false;
_options.IncludeExtensionInItemName=false;
_options.KeepExisting=false;
_options.Versioned=false;
_options.Destination=“/sitecore/media library”;
MediaItem _newFile=MediaManager.Creator.CreateFromStream(myFileControl.FileContent、myFileControl.FileName、_选项);
}
}
我最大的问题是我真的不明白一些不同的参数和属性是做什么的。MediaCreatorOptions的“目的地”属性是什么?它应该只是一个文件夹吗?它也应该有项目名称吗?CreateFromStream方法的三个参数是什么?第一条似乎是小溪——我明白了。但第二个是“文件名”。这应该是什么?如果我是从流创建的,为什么我需要告诉Sitecore文件名


任何帮助都将不胜感激。

我认为您的问题在于,您没有为Sitecore API调用使用正确的选项。你没有真正的目的地。。您可以在此处指定将成为您的项目的Sitecore项目。。。不仅仅是一个文件夹。看起来您正在尝试创建媒体库项

根据SDN上的内容API手册:

如何使用API创建媒体项

您可以使用Sitecore.Resources.Media.MediaCreator和 Sitecore.Resources.Media.MediaCreatorOptions类,用于从文件创建媒体项。 例如,要在中创建媒体项/Sitecore/media Library/Images/Sample 文件C:\temp\sample.jpg中的主数据库:

Sitecore.Resources.Media.MediaCreatorOptions选项=新建Sitecore.Resources.Media.MediaCreatorOptions();
options.Database=Sitecore.Configuration.Factory.GetDatabase(“master”);
options.Language=Sitecore.Globalization.Language.Parse(Sitecore.Configuration.Settings.DefaultLanguage);
options.Versioned=Sitecore.Configuration.Settings.Media.UploadAsVersionableByDefault;
options.Destination=“/sitecore/media library/images/Sample”;
options.filebase=Sitecore.Configuration.Settings.Media.UploadAsFiles;
Sitecore.Resources.Media.MediaCreator=新建Sitecore.Resources.Media.MediaCreator();
Sitecore.Data.Items.MediaItem sample=creator.CreateFromFile(@“C:\temp\sample.jpg”,选项)

科里,我不确定这是否仍然相关,但我遇到了与你完全相同的问题@divamatrix没有真正回答流问题,我想填写这个问题,以防其他人(或者我自己)需要答案

MediaCreatorOptions的“目的地”属性是什么

正如@divamatrix指出的,
MediaCreatorOptions
中的
Destination
属性是您希望MediaItem位于Sitecore媒体库中的位置(例如/Sitecore/Media Library/Images/Created Images)

它应该只是一个文件夹吗?它也应该有项目名称吗

否,它不应是媒体库中当前文件夹的名称。它应该是您想要创建的项目的路径,包括您想要创建的项目的名称(见上文)

CreateFromStream方法的三个参数是什么?第一条似乎是小溪——我明白了。但第二个是“文件名”。这应该是什么?如果我是从流创建的,为什么我需要告诉Sitecore文件名

如果使用
MediaCreatorOptions
设置
Destination
,文件名将被忽略,因为
GetItemPath
方法将只返回
选项。Destination
如果不为null或空。如果未设置
目的地
,则
GetItemPath
方法将尽力在媒体库中为您提供正确的路径。本质上,当使用CreateFromStream时(据我所知),在
MediaCreatorOptions
中设置
目标
,或者将
文件路径
设置为您希望项目所在的位置,
GetItemPath
方法将尝试将其放置在该位置,但如果无法设置,则可能引发异常