2010-09-16 3 views
1

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

+1

Вы уверены, что хотите, чтобы вставить его в базу данных, а не просто загрузите его в каталог? –

ответ

1

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

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

+1

Да, я согласен с Андреем, если все, что вы делаете, это попытка сохранить изображения профиля пользователя, загрузить их в каталог и сохранить их источник. Представьте, что вы запрашиваете большое количество фотографий профиля пользователя из базы данных .. у вас будет огромный успех! –

0

Ниже приведен образец кода для вставки изображения в базу данных на 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!"; 
    } 

} 

Смежные вопросы