DotNetNuke получает URL-адрес изображения, загруженного через FilePicker

У меня есть dnn: FilePicker в моем элементе управления настройками для моего модуля. Я могу получить путь к изображению из FilePicker.FilePath. Это дает мне что-то вроде:

/Изображения/Заголовки/Default.jpg

Как же мне перейти от этого к:

/[виртуальный каталог]/portals/0/Images/Header/Default.jpg

Это не похоже на то, что должно быть сложно сделать, но я не могу подобрать правильную комбинацию слов в Google, чтобы получить ответ.

Прямо сейчас я делаю что-то вроде:

imgPhoto.ImageUrl = "http://"+PortalAlias.HTTPAlias+"/portals/0/"+DefaultHeaderImage;

Где PortalAlias.HTTPalias разрешается в «localhost/[виртуальный каталог]», а DefaultHeaderImage — это свойство, содержащее значение, сохраненное из FilePicker.FilePath

Я читал, что использование псевдонима — плохая идея, и я вовсе не сторонник использования полного URL-адреса вместо относительного URL-адреса.

Должен быть лучший способ.


person mlindegarde    schedule 12.11.2013    source источник


Ответы (2)


Я использую следующий код, чтобы получить относительный путь к изображению, которое я загружаю с помощью dnn:FilePicker:

using DotNetNuke.Services.FileSystem;
...

var image = (FileInfo)FileManager.Instance.GetFile(FilePicker.FileID);
if (image != null)
{
    imgPhoto.ImageUrl = FileManager.Instance.GetUrl(image);
}

Если вам нужен полный URL-адрес, я использую следующий код:

string baseUrl = (Request.IsSecureConnection ? "https://" : "http://") + base.PortalAlias.HTTPAlias;
var image = (FileInfo)FileManager.Instance.GetFile(FilePicker.FileID);
if (image != null)
{
    imgPhoto.ImageUrl = baseUrl + FileManager.Instance.GetUrl(image);
}
person DotNetNuclear    schedule 13.11.2013
comment
FileManager.Instance — это то, чего мне не хватало. - person mlindegarde; 13.11.2013

var img_Name = (FileInfo)FileManager.Instance.GetFile(FilePicker.FileID)

«FilePicker» будет идентификатором вашего DnnFilePicker.

person irzum shahid    schedule 12.11.2018