图像路径不像“C:\ Uploader \ Image.jpg”那样在adrotator中显示的图像

时间:2011-12-26 04:46:45

标签: asp.net telerik

图像无法在adrotator中显示,其图片路径如“C:\ Uploader \ Image.jpg”或服务器中的某个共享文件夹。如果我在项目中提供路径,则其工作但在项目之外(如“C: \ Uploader \ Image.jpg“)它没有显示任何内容。

<telerik:RadRotator ID="radSlider" runat="server" FrameDuration="400" ScrollDuration="500"
ScrollDirection="Left" Height="250px" Width="550px">
<ItemTemplate>
    <img src='<%# Eval("FullName") %>' alt="Friday" width="550px" />
 </ItemTemplate>
</telerik:RadRotator>

这里我使用数据绑定动态附加路径。问题是什么.Plz帮助我?Telerik或asp控件

2 个答案:

答案 0 :(得分:1)

除非您将虚拟目录映射到图像,否则客户端浏览器永远不会知道这些图像的位置。即使你不能使用Server.MapPath()等来映射驱动器。

  

您应该使用HttpHandler来访问您的文件   应用程序虚拟目录。

检查以下与您的问题相关的SO线程:
Show Images from outside of ASP.NET Application

关于此事后,我采取了另一种方法:

您可以尝试访问应用程序虚拟目录之外的文件。你需要注意文件夹/文件的足够权限。

您可以访问您网站上的图片,您可以查看以下链接:

Displaying images that are stored outside the Website Root Folder

protected void Page_Load(object sender, EventArgs e)

{

if (Request.QueryString["FileName"] != null)

{

    try

    {

        // Read the file and convert it to Byte Array

        string filePath = "C:\\images\\";

        string filename = Request.QueryString["FileName"];

        string contenttype = "image/" +

        Path.GetExtension(Request.QueryString["FileName"].Replace(".","");

        FileStream fs = new FileStream(filePath + filename,

        FileMode.Open, FileAccess.Read);

        BinaryReader br = new BinaryReader(fs);

        Byte[] bytes = br.ReadBytes((Int32)fs.Length);

        br.Close();

        fs.Close();



        //Write the file to response Stream

        Response.Buffer = true;

        Response.Charset = "";

        Response.Cache.SetCacheability(HttpCacheability.NoCache);

        Response.ContentType = contenttype;

        Response.AddHeader("content-disposition", "attachment;filename=" + filename);

        Response.BinaryWrite(bytes);

        Response.Flush();

        Response.End();

    }

    catch

    {

    }

}

}

希望得到这个帮助。

答案 1 :(得分:0)

您应该使用IHttpHandler在不同的位置(例如,在应用程序根目录之外或在特权文件夹中)提供文件。 AFAIK,Telerik Rad Controls有一个RadBinaryImage或类似用途的东西。