我想上传2个同名但扩展名不同的文件,我想将它们放在一个zip文件中,然后使用sitecore将所有文件解压缩到sitecore媒体库中。
我使用的是sitecore 7.2。知道怎么做吗?
答案 0 :(得分:6)
您可以使用Upload Files (Advanced)
选项,然后在上传对话框中选择Unpack ZIP Archives
。
将上传文件,将已归档的解压缩文件和生成的文件单独列为单独的项目:
您对上述问题的一个问题是,Sitecore非常“灵活”( ahem ),它允许作为项目扩展,因此它无法解决这两个项目,因为它们都有相同的项目名称。
您可以在配置中设置Media.IncludeExtensionsInItemNames=true
或扩展MediaRequestHandler
以对扩展程序进行额外检查:Handling Duplicate Media Paths in Sitecore.
this previous Stackoverflow question中有关于此行为的更多信息。
注意:Unpack ZIP archives
似乎无法在Sitecore 8,Update 4(可能全部)中运行。我会把它作为支持的错误提出来。
答案 1 :(得分:0)
您可以使用普通的asp.net文件上传将zip上传到Web服务器上的目录。
然后,您可以使用Sitecore ZipReader
解压缩zip文件并创建媒体项目:
using (ZipReader zipReader = new ZipReader(str))
{
foreach (ZipEntry entry in zipReader.Entries)
{
if (entry.IsDirectory)
{
continue;
}
MediaUploadResult mediaUploadResult = new MediaUploadResult();
list.Add(mediaUploadResult);
mediaUploadResult.Path = FileUtil.MakePath(this.Folder, entry.Name, '/');
mediaUploadResult.ValidMediaPath = MediaPathManager.ProposeValidMediaPath(mediaUploadResult.Path);
MediaCreatorOptions mediaCreatorOption = new MediaCreatorOptions()
{
Language = this.Language,
Versioned = this.Versioned,
KeepExisting = !this.Overwrite,
Destination = mediaUploadResult.ValidMediaPath,
FileBased = this.FileBased,
Database = this.Database
};
MediaCreatorOptions mediaCreatorOption1 = mediaCreatorOption;
mediaCreatorOption1.Build(GetMediaCreatorOptionsArgs.UploadContext);
Stream stream = entry.GetStream();
mediaUploadResult.Item = MediaManager.Creator.CreateFromStream(stream, mediaUploadResult.Path, mediaCreatorOption1);
}
}
}