Загрузить картинку из базы данных SQL asp.net C # - PullRequest
1 голос
/ 27 марта 2012

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

public void GetUserAvatar()
    {
        string username = Convert.ToString(Session["username"]);

        var image = from u in dc.Users
                    where u.username == username
                    select u.image;
        imgAvatar.Controls.Add(image);
    }

Я думаю, мне, возможно, придется сохранить изображения в папку, а затем вместо этого сохранить путь к файлу в базе данных.Это кажется проще и плавнее.Есть идеи?

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

public void addImage()
    {
        if (fuAvatar.PostedFile.ContentType.ToLower().StartsWith
            ("image") && fuAvatar.HasFile)
        {
            string saveLocation = Server.MapPath("savedAvatars/");
            string fileExtension = System.IO.Path.GetExtension(fuAvatar.FileName);
            string fileName = Convert.ToString(Session["userid"]);
            string savePath = saveLocation + fileName + fileExtension;
            fuAvatar.SaveAs(savePath);

            string imageDBPath = fileName + fileExtension;

            LinqClass1DataContext dc = new LinqClass1DataContext();
            int userid = Convert.ToInt32(Session["userid"]);
            var tblUser = (from u in dc.Users
                           where u.userid == userid
                           select u).First();
            tblUser.imagePath = @"\savedAvatars\"+imageDBPath;
            dc.SubmitChanges();
            lblResult.Text = "Avatar lastet opp!";
        }
        else lblResult.Text = "Avatar ikke lastet opp!";
    }

А для загрузки картинки:

public void GetUserAvatar()
   {
       int userid = Convert.ToInt32(Session["userid"]);

       var varPath = dc.Users.Single(u => (u.userid == userid)).imagePath;

       string imagePath = Convert.ToString(varPath);
       imgAvatar.ImageUrl = imagePath;
   }

Ответы [ 3 ]

3 голосов
/ 27 марта 2012

Вы должны добавить универсальный файл обработчика (.ashx) и написать в нем что-то вроде этого:

string sql = "select image from table1";
SqlCommand command = new SqlCommand(sql, con);
SqlDataReader dReader = command.ExecuteReader();
dReader.Read();
context.Response.BinaryWrite((byte[])dReader["Source"]);
dReader.Close();

тогда на вашей странице сделайте что-то вроде этого:

img.ImageUrl = "Handler.ashx;
0 голосов
/ 27 марта 2012

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

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

Вам нужно будет создать обработчик, который будет загружать изображение, и вы можете передать источник изображения тег.

0 голосов
/ 27 марта 2012

http://www.dotnetcurry.com/ShowArticle.aspx?ID=129 прочитайте эту статью, сначала я нашел.По сути, вам нужно создать обработчик, который отвечает необработанным изображением.

...