将从网址获取的图像插入到SQL Server中

问题描述:

我远程从网络中将图像插入我的<asp:Image>,现在我想将该图像插入到SQL Server中。请帮忙!我有一个简单的表id (pk),我的image (image)将从网址获取的图像插入到SQL Server中

或者是否有可能插入图像从Web到SQL Server图像数据类型时,只有可用的东西是图像URL?

感谢

+0

上述解决办法,如果我可以做的将是巨大的,但任何其他建议下,我可以将用户图像存储在数据库中,并保留其图像隐私也是很好的 – user1074474 2012-02-04 10:29:31

+1

首先 - 不再使用Image数据类型 - 自从SQL Server 2005以来,已经不推荐使用'varbinary(max)'。代替。 – 2012-02-04 11:20:19

下载图像

对于使用WebClient,您可能需要包含System.Net命名空间。

WebClient wc = new WebClient(); 
wc.DownloadFile(URL_Of_The_Image, FileName_You_Want_to_Store_It_As); 

上传使用OPENROWSET

CREATE TABLE EmployeeProfile 
(
    EmpId INT, 
    EmpName VARCHAR(50) not null, 
    EmpPhoto VARBINARY(MAX) not null 
) 
GO 

INSERT EmployeeProfile (EmpId, EmpName, EmpPhoto) 
SELECT 1001, 'Vadivel', BulkColumn 
FROM OPENROWSET(BULK 'C:\Images\Demo.jpg', Single_Blob) AS EmployeePicture 
GO 

图像到SQL Server表参考 - http://vadivel.blogspot.in/2005/10/saving-images-as-blob-into-sql-server.html

+0

其非常有帮助,有一件事更多 – user1074474 2012-02-04 11:57:29

+0

它非常有帮助,我想通过给我的图像文件夹提供相对路径来节省一件事,它与我的PC的绝对路径一起工作 – user1074474 2012-02-04 12:18:13

如果你已经是你将不得不使用像WebClient.DownloadData(url)收获的人在本地,牢记URL的:它可能不是真正给你的图像(推荐/ AUTH检查等),和b:版权可能适用。

然后,它只是将byte[]交给SQL服务器。您可以将byte[]传递给SqlParameter.Value,对于SQL Server中的存储,您可以使用varbinary(max)类型。我还建议存储从WebClient.ResponseHeaders得到的内容类型,以便知道它是什么类型的图像。

请勿使用image数据类型;已过时varbinary(max)

未来版本的Microsoft SQL Server中将删除ntext,文本和图像数据类型。避免在新的开发工作中使用这些数据类型,并计划修改当前正在使用它们的应用程序。改为使用nvarchar(max),varchar(max)和varbinary(max)。

(来源:MSDN

这篇文章有你需要的一切(和更多):使用C#从URL

http://www.codeproject.com/Articles/126421/Image-Handling-In-ASP-NET