使用JSP从SQL Server 2008检索二进制数据[varbinary(max)]

时间:2011-04-09 16:14:14

标签: jsp binary-data file-extension varbinarymax

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

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

插入查询:

  

INSERT INTO Employees SELECT'10',
  (SELECT BulkColumn AS E FROM   OPENROWSET(BULK'd:\ 1.jpg',   Single_Blob)bc),'John',(SELECT   BulkColumn AS E来自OPENROWSET(BULK   'd:\ 2.wav',Single_Blob)bc)

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

1 个答案:

答案 0 :(得分: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>

另见: