图像无法在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控件
答案 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或类似用途的东西。