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

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

/Images/Headers/Default.jpg

Как, черт возьми, я иду от этого, чтобы:

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

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

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

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

Где PortalAlias.HTTPAlias ​​преобразуется в "localhost/[virtual directory]", а DefaultHeaderImage - это свойство, содержащее значение, сохраненное из FilePicker.FilePath.

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

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

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);
}
var img_Name = (FileInfo)FileManager.Instance.GetFile(FilePicker.FileID)

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

Другие вопросы по тегам