1

モジュールの設定コントロールに 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 を使用することはまったく好きではありません。

もっと良い方法があるはずです。

4

2 に答える 2

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);
}
于 2013-11-13T00:51:51.533 に答える