Я пытался сменить 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.
В данный момент я просто играю, поэтому код немного грязный. Но я не понимаю, почему это не работает.
Я что-то упустил?
Спасибо!