Сохранить изображение профиля пользователя в базу данных

Как я могу динамически вставлять изображения, когда пользователь загружает файл изображения в SQL Server 2005 с C# в ASP.NET? Это позволяет пользователям загружать фотографии своего профиля в мое веб-приложение. Это сильно отличается от того, как это делается для приложения Windows с C#?

3 ответа

Решение

В сети есть метрическая тонна примеров:

http://aspalliance.com/138
http://www.4guysfromrolla.com/articles/120606-1.aspx
http://www.aspfree.com/c/a/ASP.NET/Uploading-Images-to-a-Database--C---Part-I/

Вы должны быть в состоянии следовать за любым из них, чтобы выполнить то, что вы хотите.

Так же, как и в WinForms. Получить byte[] и то же самое image колонка. Но я настоятельно рекомендую использовать файловую систему для хранения картинок. БД для реляционных данных, Файловая система для необработанных байтов.

http://msdn.microsoft.com/en-us/library/aa479405.aspx

Вот пример кода для вставки изображения в базу данных в C#. Грубо вам понадобится вспомогательная таблица, изображение должно быть байтовым полем и сохранять тип изображения, чтобы вы могли получить изображение позже для его отображения. В дополнение к этому вам нужно поместить поле ввода файла на страницу вместе с кнопкой отправки.

public void AddImage(object sender, EventArgs e)
{

    int intImageSize;

    String strImageType;
    Stream ImageStream;
    FileStream fs = File.OpenRead(Request.PhysicalApplicationPath + "/Images/default_image.png");
    Byte[] ImageContent;

    if (PersonImage.PostedFile.ContentLength > 0)
    {
        intImageSize = PersonImage.PostedFile.ContentLength;
        strImageType = PersonImage.PostedFile.ContentType;
        ImageStream = PersonImage.PostedFile.InputStream;

        ImageContent = new Byte[intImageSize];
        int intStatus;
        intStatus = ImageStream.Read(ImageContent, 0, intImageSize);
    }
    else
    {
        strImageType = "image/x-png";
        ImageContent = new Byte[fs.Length];
        fs.Read(ImageContent, 0, ImageContent.Length);
    }

    SqlConnection objConn = new SqlConnection(ConfigurationManager.AppSettings["conn"]);
    SqlCommand objCmd;
    string strCmd;

    strCmd = "INSERT INTO ImageTest (Picture, PictureType) VALUES (@Picture, @PictureType)";

    objCmd = new SqlCommand(strCmd, objConn);

    SqlParameter prmPersonImage = new SqlParameter("@Picture", SqlDbType.Image);

    prmPersonImage.Value = ImageContent;

    objCmd.Parameters.Add(prmPersonImage);
    objCmd.Parameters.AddWithValue("@PictureType", strImageType);

    lblMessage.Visible = true;

    try
    {
        objConn.Open();
        objCmd.ExecuteNonQuery();
        objConn.Close();
        lblMessage.Text = "ImageAdded!";
    }
    catch
    {
        lblMessage.Text = "Error occured the image has not been added to the database!";
    }

}

Другие вопросы по тегам