我在网络应用中显示图片时遇到问题。它从数据库拍了照片,应该在网络应用程序中显示。
protected void btnShowPhoto_Click(object sender, EventArgs e)
{
string adresURL = @"~/Content";
string camPath = "";
string[] tab = new string[10];
CheckBox[] _boxes = new CheckBox[] { this.CheckBox1, this.CheckBox2, this.CheckBox3, this.CheckBox4, this.CheckBox5, this.CheckBox6, this.CheckBox7, this.CheckBox8 };
System.Web.UI.WebControls.Image[] _images = new System.Web.UI.WebControls.Image[] { this.Image1, this.Image2, this.Image3, this.Image4, this.Image5, this.Image6, this.Image7, this.Image8 };
Label[] _labels = new Label[] { this.lblCameraName1, this.lblCameraName2, this.lblCameraName3, this.lblCameraName4, this.lblCameraName5, this.lblCameraName6, this.lblCameraName7, this.lblCameraName8 };
System.Web.UI.HtmlControls.HtmlAnchor[] _linkscontrol = new System.Web.UI.HtmlControls.HtmlAnchor[] { this.imagelink1, this.imagelink2, this.imagelink3, this.imagelink4, this.imagelink5, this.imagelink6, this.imagelink7, this.imagelink8 };
for (int i = 0; i < 8; i++)
{
_images[i].Visible = false;
_labels[i].Visible = false;
_linkscontrol[i].HRef = "";
}
for (int i = 0; i < 8; i++)
{
if (_boxes[i].Checked)
{
camPath = null;
tab = null;
camPath = this.GridView2.Rows[i].Cells[0].Text;
tab = camPath.Split(new string[] { "StoredPhotos" }, StringSplitOptions.None);
//Virtual Path'a
camPath = adresURL + tab[1].Replace(@"\", "/");
_labels[i].Visible = true;
_labels[i].Text = this.GridView2.Rows[i].Cells[1].Text;
_linkscontrol[i].HRef = camPath;
_images[i].ImageUrl = camPath;
_images[i].Visible = true;
}
else
_images[i].Visible = false;
}
}
我的虚拟路径可能有问题。 CamPath(虚拟路径)变为:E:\ Photo \ StoredPhotos \ 20151010 \ 000003819619_201512021335_1_C1,最后看起来:〜/ 20151010 / 000003819619_201512021335_1_C1
答案 0 :(得分:1)
此路径对网络浏览器毫无意义:
~/20151010/000003819619_201512021335_1_C1
它不知道如何处理~
目录。这是服务器端概念,而不是客户端概念。因此,您的服务器端代码需要将其解析为实际路径。
它可以像从服务器的根目录明确地开始一样简单:
string adresURL = @"/Content";
因此,生成的网址将以/Content/.....
开头,浏览器会检查该路径中的图片。
但是如果应用程序不是(或可能不是)服务器域的根目录,那么您需要手动设置该帐户或使用某种服务器端帮助程序。有a variety of ways可以解决这个问题,例如:
_images[i].ImageUrl = System.Web.VirtualPathUtility.ToAbsolute(camPath);
答案 1 :(得分:0)
浏览器希望通过http协议访问图像,如果你想以2种不同的方式查看图像: