如何在C#中使用imageurl显示图像

时间:2014-05-16 05:44:53

标签: c# asp.net

if (FileUpload1.HasFile)
        {
            string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
            //string path = Server.MapPath(@"~\\"+Session["parentfolder"].ToString() +"\\"+ Session["brandname"].ToString() + "\\" + Seasonfolders.SelectedItem.Text + "\\" + stylefolders.SelectedItem.Text + "\\Images\\" + FileName);
            string root = Server.MapPath("~");
            string path = Path.GetDirectoryName(root);
            string path1 = Path.GetDirectoryName(path);
            string rootfolder = Path.GetDirectoryName(path1);
            string imagepath = rootfolder + Session["brandname"].ToString() + "\\" + Seasonfolders.SelectedItem.Text + "\\" + stylefolders.SelectedItem.Text + "\\Images\\" + FileName;
            FileUpload1.SaveAs(imagepath);
            //objBAL.SaveImage("Image", Session["brandname"].ToString(), Seasonfolders.SelectedItem.Text, stylefolders.SelectedItem.Text, FileName, imagepath, Convert.ToInt32(Session["Empcode"]));
            uploadedimage.ImageUrl = Server.MapPath(@"~/"+imagepath);
            uploadedimage.DataBind();

        }

uploadedimage是Image控件的ID。 imagepath的路径是E:\ Folder1 \ Folder2 \ Folder3 \ Images \ 1.png

图像已保存但我无法显示上传的图像。我是否需要在此行中添加任何显示图像的内容..

            uploadedimage.ImageUrl = Server.MapPath(@"~/"+imagepath);
            uploadedimage.DataBind();

3 个答案:

答案 0 :(得分:1)

图片中的图片网址应该是这样的

"~/"+ imagepath

尝试删除Server.MapPath

答案 1 :(得分:1)

试试这个

在根目录中创建数据文件夹

 if (FileUpload1.HasFile)
    {
        string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);              
        string imagepath =Server.MapPath("~/Data/"+FileName);
        FileUpload1.SaveAs(imagepath); 

        uploadedimage.ImageUrl="~/"+imagepath;
    }

答案 2 :(得分:1)

在iis上托管网站或内容不会以这种方式运作。在这方面需要学习一些概念,但最好的开始是理解什么是虚拟目录

来自this页面的一句话:

  

在IIS 7中,每个应用程序都必须有一个虚拟目录,称为   root虚拟目录,并将应用程序映射到物理   包含应用程序内容的目录

所以这意味着这是应用程序的“内容”所在的目录;它可能是简单的文本文件,图像等,复杂的服务器端页面,如aspx甚至经典的asp或php等。现在托管的Web应用程序无法访问此目录之外的任何内容。

因此,您打算分享的路径不会那样。有几种方法可以处理这种情况。

  1. 在iis中,您可以创建一个子虚拟目录,并将其路径映射到图像所在的位置,以及图像所在的物理位置。

  2. 如果您的Web应用程序(在iis上托管时)可以访问映像所在的路径,您可以编写代码来读取文件,然后重新发送字节流,以便您的网页可以呈现图像正常。

  3. 第二种方法通常由处理程序(ashx)实现,您可以通过该处理程序将图像名称作为查询字符串参数传递,并返回字节。因此,简而言之,您可以这样做:

    uploadedImage.ImageUrl = "~/MyImageHandler.ashx?filename=foo.png" //in ur server code.
    

    在处理程序中,您可以编写如下内容:

    public class MyImageHandler : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
        // Comment out these lines first:
        // context.Response.ContentType = "text/plain";
        // context.Response.Write("Hello World");
    
        context.Response.ContentType = "image/png";
    
        var filepath = @"E:\your_image_dir\" + Request.QueryString["filename"];
    
        //Ensure you have permissions else the below line will throw exception.
        context.Response.WriteFile(filepath);
    
        }
    
        public bool IsReusable {
        get {
            return false;
        }
        }
    }