我正在开发一个 API。到目前为止,一切都很顺利,但我必须在 API 中将图像保存到数据库中。场景,假设我有一个 Person 类,具有三个属性 {Name、Age 和 (byte[])Image}。如何通过API将Person的图片添加到数据库中?
public IHttpActionResult Create([FromBody] Person person) { }
要实现此目的,您需要使用
VarBinary
来传递图像参数,如本例所示:
public static void InsertByteArrayintoSqlDatabase()
{
string sampleText = "Hello World!";
byte[] byteData = Encoding.UTF8.GetBytes(sampleText);
using (SqlConnection sqlconnection = new SqlConnection(@"Data Source=.SQLExpress;
Initial Catalog=MorganDB; Integrated Security=SSPI;"))
{
sqlconnection.Open();
// create table if not exists
string createTableQuery = @"Create Table [MyTable](ID int, [BinData] varbinary(max))";
SqlCommand command = new SqlCommand(createTableQuery, sqlconnection);
command.ExecuteNonQuery();
string insertXmlQuery = @"Insert Into [MyTable] (ID,[BinData]) Values(1,@BinData)";
// Insert Byte [] Value into Sql Table by SqlParameter
SqlCommand insertCommand = new SqlCommand(insertXmlQuery, sqlconnection);
SqlParameter sqlParam = insertCommand.Parameters.AddWithValue("@BinData", byteData);
sqlParam.DbType = DbType.Binary;
insertCommand.ExecuteNonQuery();
}
取自https://morgantechspace.com/2014/05/how-to-store-and-read-byte-array-in-sql-server-using-csharp.html
我不建议将图像存储在数据库中。相反,将它们存储为文件并将其名称/路径存储在数据库中更有意义。