Преобразование изображения в байты для хранения в базе данных
Может ли кто-нибудь сказать мне, как конвертировать изображение (хранящееся в пути к файлу) в байты для хранения в базе данных?
- SQL Server Compact 4 как поставщик членства в ASP.NET MVC3
- LINQ to Entities и нулевые строки
- Проблемы с переносом основной идентичности ASP.NET с SQL Server на MySQL
- Как бы вы создали систему «Избранные страницы»
- Преимущества «использования» блока для инициализации SqlCommand
- SQL LIKE% для INTEGERS
- Понимание структуры asp.net
- сеанс asp.net с использованием режима sql-сервера
Почему вы хотите сохранить путь как байты? Почему бы вам просто не сохранить его как строку? Если вы не хотите, чтобы вы хранили данные изображения в виде байтов в базе данных, и в этом случае просмотрите тип данных изображения .
Чтобы преобразовать изображение, сохраненное локально в байты, вы можете использовать IO.File.ReadAllBytes()
. Чтобы преобразовать изображение в Интернет, вы можете использовать Net.WebClient.DownloadData()
. Тип данных IMAGE
уходит в SQL Server, поэтому используйте VARBINARY(MAX)
для его сохранения.
Код:
Dim url As String = "http://example.com/image.png", file As String = "c:\image.png" Using connection As New Data.SqlClient.SqlConnection("your connection string"), saveImage As New Data.SqlClient.SqlCommand("dbo.saveImage", connection) connection.Open() saveImage.CommandType = Data.CommandType.StoredProcedure 'use only one of these saveImage.Parameters.AddWithValue("@imageData", New Net.WebClient().DownloadData(url)) 'get file from url 'saveImage.Parameters.AddWithValue("@imageData", IO.File.ReadAllBytes(file)) 'get file locally saveImage.ExecuteNonQuery() End Using
Процедура:
CREATE PROCEDURE [dbo].[saveImage] ( @imageData AS VARBINARY(MAX) ) AS INSERT INTO dbo.myImage ( imageData ) VALUES ( @imageData )
Таблица:
CREATE TABLE [dbo].[myImage]( [imageData] [varbinary](max) NOT NULL )