【问题标题】:Sitecore - Upload two file with same name but different extension inside a zip fileSitecore - 在一个 zip 文件中上传两个具有相同名称但扩展名不同的文件
【发布时间】:2023-03-07 09:20:01
【问题描述】:

我想上传 2 个名称相同但扩展名不同的文件,我想将它们放在一个 zip 文件中,然后使用 sitecore 将所有文件提取到 sitecore 媒体库中。
我正在使用站点核心 7.2。知道怎么做吗?

【问题讨论】:

    标签: sitecore sitecore7


    【解决方案1】:

    您可以使用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(可能全部)中运行。我会在支持下将其作为一个错误提出。

    【讨论】:

      【解决方案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);
                      }
                  }
          }
      

      【讨论】:

      • 是的,但我真的想要来自 sitecore 后端的解决方案。不过谢谢
      • 您具体需要哪些方面的帮助?
      • 我已经找到了答案。看起来这更像是配置问题。我已经解决了这个问题
      • MediaUploadResult 的属性是内部的/只读的。上面的代码不会编译
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多