Получение изображений с использованием пути к файлу, хранящегося в базе данных SQL (почти там!) - PullRequest
0 голосов
/ 02 декабря 2009

Хорошо, я думаю, что я близок к тому, чтобы сделать прорыв в этом.

У меня есть следующий код, который теоретически должен заполнить изображение, используя путь к файлу через базу данных sql

public void Image1_Load(object sender, EventArgs e)
{
    ////Code to retrieve logo image from tblMemberLogo - Currently does not work!!!

    var connectionstring = ConfigurationManager.ConnectionStrings["PDCConnectionString"].ConnectionString;
    using (var cn = new SqlConnection("Data Source=STRSQL04;Initial Catalog=PDC;Integrated Security=True"))
    using (var cmd = cn.CreateCommand())
    {
        cn.Open();
        cmd.CommandText = "SELECT LogoFilePath FROM tblMemberlogo WHERE MemberID = '123'";
        //cmd.Parameters.Add("123", "5");
        using (var reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
                var filepath = reader.GetString(0);
                Image1.ImageUrl = filepath;
                Label2.Text = filepath;
            }
        }
    }
}

Теперь я знаю, что я близок, так как Label2 возвращает соответствующий путь к файлу для члена 123. Однако в Image1 все еще присутствует страшный красный крест. Исходный код этого элемента управления изображения просто следующий.

Image ID="Image1" runat="server" Height="71px"  
            Width="400px" onload="Image1_Load"  

Я куплю тому, кто поможет мне закончить этот финиш, хорошую большую пинту, так как я нахожусь на грани (другого) срыва !!!

Пожалуйста, найдите ниже выходной HTML.

img id="Image1" src="file:c:\online%20reporting\SQL%20Solutions\Member%20Logo\123.GIF" style="height:71px;width:400px;border-width:0px;"

Ответы [ 3 ]

3 голосов
/ 02 декабря 2009

К сожалению, вы не можете использовать URL "file:" в качестве источника изображения. Что вам нужно сделать, это превратить этот путь в действительный URL-адрес HTTP.

Так что, если ваши изображения находятся в "c:\online reporting\SQL Solutions", вы должны добавить виртуальный каталог в IIS под корневым каталогом вашего сайта, который указывает на него, возможно, назовите его «/ logos» или как-то еще, тогда вы можете перейти:

String fileName = Path.GetFileName(reader.GetString(0)); Image1.ImageUrl = "/logos/" + fileName;

Если ваш веб-корень уже запущен, скажем, в «c: \ online report», это еще проще - вы можете пропустить виртуальный каталог и просто использовать «/ SQL% 20Solutions /» в качестве начала URL-адреса.

1 голос
/ 02 декабря 2009

В зависимости от URL-адреса вам может понадобиться ResolveClientUrl или Server.MapPath

Image1.ImageUrl = ResolveClientUrl(filepath);

OR

Image1.ImageUrl = Server.MapPath(filepath);
0 голосов
/ 02 декабря 2009

Я не уверен, как хранятся ваши данные, но в большинстве случаев при назначении серверной части изображений вам необходимо убедиться, что они соответствуют веб-сайту.

Сделайте это, используя:

Image1.ImageUrl = Server.MapPath (filepath);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...