Не существует PropertyType с предоставленным псевдонимом: umbracoWidth - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь создать Media программно в Umbraco 7.4.1, но когда я пытаюсь использовать MediaType.File, я получаю сообщение об ошибке

Нет PropertyType с указанным псевдонимом: umbracoWidth

Но когда я меняю его на MediaType.Image, он сохраняет и работает правильно. Когда я пытаюсь просмотреть CMS, действительно, у файла mediaType нет свойства ширины. Поэтому я не уверен, почему при выполнении media.SetValue("umbracoFile", filename, stream); он пытается найти свойство umbracoWidth, хотя я использовал MediaType.File

. Ниже показано, как я определяю свой код

string[] filePaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "uploads");

foreach (string filePath in filePaths)
{
    using (Stream stream = System.IO.File.OpenRead(filePath))
    {
        string filename = Path.GetFileName(filePath);
        IMedia media = Services.MediaService.CreateMedia(filename, Constants.System.Root, Constants.Conventions.MediaTypes.File);
        media.SetValue("umbracoFile", filename, stream);
        Services.MediaService.Save(media);
    }
}

Но если я изменю код с Constants.Conventions.MediaTypes.File на Constants.Conventions.MediaTypes.Image, он работает правильно, но проблема в том, что тип носителя неверен. Особенно, если я загружаю видео или PDF-файл. Хотя ему удалось создать новый носитель, тип будет неправильным, поскольку он указан как изображение. Я хочу знать, как решить проблему при использовании файла mediatype

1 Ответ

0 голосов
/ 18 июня 2020

Вам необходимо вручную переключить тип носителя при загрузке.

Например. проверьте расширение файла, если это gif / jpeg / jpg, изменение на Image, в противном случае используйте File.

Внутри Umbraco они используют этот код, чтобы узнать, является ли файл изображением (или не):

    /// <summary>
    /// Gets a value indicating whether the file extension corresponds to an image.
    /// </summary>
    /// <param name="extension">The file extension.</param>
    /// <returns>A value indicating whether the file extension corresponds to an image.</returns>
    public bool IsImageFile(string extension)
    {
        if (extension == null) return false;
        extension = extension.TrimStart('.');
        return UmbracoConfig.For.UmbracoSettings().Content.ImageFileTypes.InvariantContains(extension);
    }

Это источник из фрагмента выше

...