一尘不染

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

jsp

这是我用来在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中的结果?


阅读 255

收藏
2020-06-10

共1个答案

一尘不染

您需要在数据库表中添加另一列用于内容类型或文件名/扩展名。这样,您可以将其随二进制数据一起插入并稍后取回。

在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>
2020-06-10