Загрузить изображение на сервер с помощью C # /. NET и сохранить имя файла в БД - PullRequest
4 голосов
/ 19 мая 2011

В настоящее время я использую следующий фрагмент для вставки данных в таблицу в моей базе данных.Работает отлично.Но я хочу начать добавлять данные об имени файла и не уверен, что делать дальше.

У меня есть следующее:

// Create command 
comm = new SqlCommand(
  "INSERT INTO Entries (Title, Description) " +
  "VALUES (@Title, @Description)", conn);

// Add command parameters
comm.Parameters.Add("@Description", System.Data.SqlDbType.Text);
comm.Parameters["@Description"].Value = descriptionTextBox.Text;
comm.Parameters.Add("@Title", System.Data.SqlDbType.NVarChar, 50);
comm.Parameters["@Title"].Value = titleTextBox.Text;

У меня также есть опция Загрузка файла .Но я не знаю, как использовать это, чтобы сделать следующее:

  • переместить файл в мой каталог images и
  • сохранить имя файла значение в моей таблице.

Я добавил правильный enctype в мою форму, но теперь немного потерян.

Может кто-нибудь объяснить, как это сделать лучше?1025 * Большое спасибо за любую помощь в этом.

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

Чтобы сохранить файл в папке с изображениями, оно должно быть:

FileUpload1.SaveAs(Server.MapPath("~/Images/" + FileUpload1.FileName));

и затем добавьте параметры команды в имя файла

comm.Parameters["@FileName"].Value = FileUpload1.FileName;

Примечание: в вашей таблице БД должно быть поле FileName.

0 голосов
/ 19 мая 2011

Я предлагаю хранить файл в БД тоже. Это гарантирует согласованность данных.

Добавить столбец в БД. Замените X подходящим размером, если изображение меньше 8000, или укажите varbinary (MAX), если это не так.

alter table Entries
    add FileContent varbinary(X) not null

C # код:

byte[] fileContent = yourFileContent;
using(var connection = new SqlConnection(connectionString))
using (var command = connection.CreateCommand())
{
    command.CommandText = @"
        INSERT INTO Entries (Title, Description, FileContent)
        VALUES (@Title, @Description, @FileContent)
        ";
    command.Parameters.AddWithValue("Description", descriptionTextBox.Text);
    command.Parameters.AddWithValue("Title", titleTextBox.Text);
    command.Parameters.AddWithValue("FileContent", fileContent);
    connection.Open();
    command.ExecuteScalar();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...