1

这是我用来在 SQL Server 2008
创建查询中创建和插入二进制数据的查询:

CREATE TABLE Employees (
Id int,
Photo varbinary(max) not null,
Name varchar(50) not null,
Sound varbinary(max) not null
)

插入查询:

插入员工 SELECT '10',
(SELECT BulkColumn AS E FROM OPENROWSET (BULK 'd:\1.jpg', Single_Blob) bc), 'John', (SELECT BulkColumn AS E FROM OPENROWSET (BULK 'd:\2. wav', Single_Blob) bc)

其中一个文件是.jpg,另一个是.wav
检索时如何知道这些文件的扩展名?
我必须使用查询来查找扩展名吗?
或者
我在 jsp 中获得结果集后是否必须查看内容类型?

4

1 回答 1

0

您需要为内容类型或文件名/扩展名添加另一列到数据库表。这样,您可以将其插入二进制数据并稍后检索。

在 Servlet 中,您可以根据文件名/扩展名获取内容类型,如下所示:

String contentType = getServletContext().getMimeType(filename);
// ...

如果您在插入之前执行此操作,那么您可以存储内容类型。如果您在插入后执行此操作,那么您应该一起存储文件名。

servlet 上下文中的默认 mime 类型在 servletcontainer 中定义web.xml,例如 Tomcat 位于其/conf/web.xml. 您也可以为自己添加其他 mime 类型/WEB-INF/web.xml,例如

<mime-mapping>
    <extension>svg</extension>
    <mime-type>image/svg-xml</mime-type>
</mime-mapping>

也可以看看:

于 2011-04-09T17:50:06.643 回答