这是我用来在SQL Server 2008 Create查询中创建和插入二进制数据的查询:
CREATE TABLE Employees ( Id int, Photo varbinary(max) not null, Name varchar(50) not null, Sound varbinary(max) not null )
插入查询:
插入员工 SELECT‘10 ‘,(从OPENROWSET中选择BulkColumn AS E(BULK’d:\ 1.jpg’,Single_Blob)bc),’John’,(从OPENROWSET中选择SELECT BulkColumn AS E(BULK’d:\ 2。 wav’,Single_Blob)bc)
其中一个文件是 .jpg ,另一个文件是 .wav。 如何在检索时知道这些文件的扩展名? 我必须使用查询来找到扩展名吗? 或者 我是不是要看到的内容类型后,我得到了JSP中的结果?
您需要在数据库表中添加另一列用于内容类型或文件名/扩展名。这样,您可以将其随二进制数据一起插入并稍后取回。
在Servlet中,您可以根据文件名/扩展名获取内容类型,如下所示:
String contentType = getServletContext().getMimeType(filename); // ...
如果在插入之前执行此操作,则可以一起存储内容类型。如果在插入后执行此操作,则应将文件名存储在一起。
servlet上下文中的默认mime类型在servletcontainer web.xml中定义,例如在Tomcat中/conf/web.xml。您也可以添加其他MIME类型/WEB-INF/web.xml,例如
web.xml
/conf/web.xml
/WEB-INF/web.xml
<mime-mapping> <extension>svg</extension> <mime-type>image/svg-xml</mime-type> </mime-mapping>