Sitecore - 在 zip 文件中上传两个名称相同但扩展名不同的文件
Sitecore - Upload two file with same name but different extension inside a zip file
我想上传 2 个名称相同但扩展名不同的文件,我想将它们放在一个 zip 文件中,然后使用 sitecore 将所有文件提取到 sitecore 媒体库中。
我正在使用 sitecore 7.2。知道怎么做吗?
您可以使用正常的 asp.net 文件上传将 zip 文件上传到网络服务器上的目录。
然后您可以使用 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);
}
}
}
您可以使用 Upload Files (Advanced)
选项,然后在上传对话框中 select Unpack ZIP Archives
。
文件将被上传,存档的解压文件和生成的文件分别列为单独的项目:
您遇到的问题是 Sitecore 非常 "flexible" (ahem) 它允许作为项目扩展,因此它无法同时解决这两个问题这些项目,因为它们都有相同的项目名称。
您可以在配置中设置 Media.IncludeExtensionsInItemNames=true
或扩展 MediaRequestHandler
以对扩展进行额外检查:Handling Duplicate Media Paths in Sitecore.
this previous Whosebug question 中有关于此行为的更多信息。
注意:Unpack ZIP archives
似乎无法在 Sitecore 8 更新 4(可能全部)中运行。我会把它作为一个错误提出来支持。
我想上传 2 个名称相同但扩展名不同的文件,我想将它们放在一个 zip 文件中,然后使用 sitecore 将所有文件提取到 sitecore 媒体库中。
我正在使用 sitecore 7.2。知道怎么做吗?
您可以使用正常的 asp.net 文件上传将 zip 文件上传到网络服务器上的目录。
然后您可以使用 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);
}
}
}
您可以使用 Upload Files (Advanced)
选项,然后在上传对话框中 select Unpack ZIP Archives
。
文件将被上传,存档的解压文件和生成的文件分别列为单独的项目:
您遇到的问题是 Sitecore 非常 "flexible" (ahem) 它允许作为项目扩展,因此它无法同时解决这两个问题这些项目,因为它们都有相同的项目名称。
您可以在配置中设置 Media.IncludeExtensionsInItemNames=true
或扩展 MediaRequestHandler
以对扩展进行额外检查:Handling Duplicate Media Paths in Sitecore.
this previous Whosebug question 中有关于此行为的更多信息。
注意:Unpack ZIP archives
似乎无法在 Sitecore 8 更新 4(可能全部)中运行。我会把它作为一个错误提出来支持。