1

我正在为上传图片编写自定义模块。将文件上传到自定义文件夹后。加载图像时,图像的地址是正确的,但它没有显示在图像控件中。

如何在 DotNetNuke 自定义模块中显示图像?

//Save Picture Code:

    fileuppic.PostedFile.SaveAs(MapPath("~/images/Hotels/" + filename));

//Load Picture Code:

  while (dr.Read())
    {
       imgpic.ImageUrl = MapPath("~/images/Hotels/") + dr["Picture"].ToString();
    }

//my ImageControl :
    <asp:Image ID="imgpic" runat="server" />
4

2 回答 2

4

如果你已经有了fileId,你可以这样做:

VB.NET

Protected Function GetPath(fileId As Integer) As String

    Dim fi = FileManager.Instance.GetFile(fileId)
    Return FileManager.Instance.GetUrl(fi)

End Function

C#

private string GetPath(int fileId)
{
    var fi = FileManager.Instance.GetFile(fileId);
    return FileManager.Instance.GetUrl(fi);
}
于 2013-09-13T14:48:59.857 回答
3

您并没有真正按照 DNN 的预期使用文件系统。图像应该通过 DNN 的 DotNetNuke.Services.FileSystem 命名空间进行管理,并且您可能会编写很多不需要的代码来保存图像(尝试使用 dnnFilePickerUploader 控件,它会处理上传并传递给您一个 FileId )。将 FileId 与对象一起保存后,您可以使用类似这样的方法来加载图像:

private string GetPath(int fileId)
{
    StringBuilder sb = new StringBuilder("/Portals/");

    IFileInfo fi = FileManager.Instance.GetFile(fileId);
    sb.Append(fi.PortalId);
    sb.Append("/");
    sb.Append(fi.RelativePath);

    return sb.ToString();
}
于 2013-05-23T20:09:45.807 回答