Загрузить изображения в SQL Server 2005 с помощью ASP.Net MVC? - PullRequest
3 голосов
/ 26 января 2009

Я знаю, что есть способ загрузить изображения в базу данных как тип изображения или тип varbinary, однако я искал всю неделю, я не могу найти ничего, что может мне помочь, так что это действительно мое последнее средство если кто-нибудь знает, как загрузить изображения в базу данных, я использую SQL Server 2005 Express.

Спасибо

Ответы [ 4 ]

2 голосов
/ 26 января 2009

Вы должны иметь доступ к коллекции файлов запроса и получить экземпляр HttpPostedFile для каждого загруженного файла. Возьмите InputStream из файла и прочитайте его в байтовом массиве для свойства столбца. Я предполагаю, что именно так DAL отображает varbinary в ваш бизнес-класс - если нет, скажем, что это нативный Image, то вам нужно выполнить преобразование перед сохранением. В приведенном ниже примере используется LINQ2SQL.

MyClass obj = new MyClass();
obj.Name = Request["name"];   // other properties
obj.Alt = Request["altText"];

HttpPostedFile file = Request.Files[0];
if (file != null)
{
     obj.Image image = new byte[file.ContentLength];
     file.Read(obj.Image,0,file.ContentLength];
}

using (DataContext context = new DataContext())
{
    context.InsertOnSubmit( obj );
    context.SubmitChanges();
}
0 голосов
/ 29 декабря 2010

Взгляните на Загрузка и выгрузка изображений с SQL Server через ASP.Net MVC для примера эффективной потоковой передачи файлов изображений, хранящихся в полях BLOB-объектов SQL Server.

0 голосов
/ 26 января 2009

Если у вас есть хранимая процедура TestProc, которая принимает один аргумент @data типа IMAGE, ваш код C # может выглядеть следующим образом:

SqlConnection conn = new SqlConnection("<your connection string>");
conn.Open();

SqlCommand cmd = new SqlCommand("TestProc", conn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter param = new SqlParameter("@data", SqlDbType.Image);
param.Value = System.IO.File.ReadAllBytes("any_file.jpg");
cmd.Parameters.Add(param);

cmd.ExecuteNonQuery();

Дайте мне знать, если вам нужен также код хранимой процедуры.

0 голосов
/ 26 января 2009

Если вы можете сохранить изображение как VARCHAR, вот код для этого.

    String b64;
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        this.pic.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        Byte[] bytes = ms.ToArray();
        b64 = Convert.ToBase64String(bytes);
    }
    using (SqlConnection conn = new SqlConnection(ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand("UPDATE [settings] SET [value] = @val WHERE [id] = 2", conn))
        {
            conn.Open();
            cmd.Parameters.Add(new SqlParameter("@val", b64));
            cmd.ExecuteNonQuery();
            conn.Close();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...