Umbraco 媒体通过 Cloudinary

Umbraco Media Via Cloudinary

我一直在尝试更改 Umbraco,以便通过 Cloudinary 提供媒体。

到目前为止我所做的是创建一个新的 IFileSystem

这是一个小片段:

public CloudinaryFileSystem()
    {
        var account = new Account(
            "account",
            "key",
            "secret");
        _cloudinary = new CloudinaryDotNet.Cloudinary(account);

    }
    public IEnumerable<string> GetDirectories(string path)
    {
        var test = "test";
        return new List<string>{test};
    }

我也更新了 FileSystemProvider.config:

 <!-- Media -->
<Provider alias="media" type=" Extensions.CloudinaryFileSystem, Extensions">
    <Parameters>
    </Parameters>
  </Provider>

我还在 web.config 中添加了媒体路径位置:

<location path="media">
<system.webServer>
  <handlers>
    <remove name="StaticFileHandler" />
    <add name="StaticFileHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />
  </handlers>
</system.webServer>
 </location>

现在,当我 运行 项目时,我可以上传新图像:

当我上传图片时,它会访问我的自定义文件提供程序并将文件上传到 Cloudinary

代码:

public void AddFile(string path, Stream stream)
    {
        ImageUploadParams prmas = new ImageUploadParams();

        var folder = path.Split('\')[0];
        var name = path.Split('\')[1];

        prmas.Folder = "media/" + folder;

        prmas.UseFilename = true;
        prmas.File = new FileDescription(name, stream);

        _cloudinary.Upload(prmas);
    }

我现在遇到的问题是,当我在 Umbraco 中查看媒体时,它仍然来自本地媒体,我为 IFileSystem 实现了所有方法,但是当我在 Umbraco 中浏览媒体时,只有其中一个可以被点击.

目前我只是在玩,所以代码有点脏。但是我不明白为什么它不起作用。

我错过了什么吗?

谢谢!

发现了这个问题,那里的方法是获取文件信息以便为 Umbraco 设置它。它们不用于获取上传后的文件信息。