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



这是我用来在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 FROMOPENROWSET (BULK 'd:1.jpg'),(1), 'John', (SELECT从OPENROWSET (BULK)获取BulkColumn'd:2.wav', Single_Blob) bc)

一个文件是.jpg另一个文件是.wav
检索时如何知道这些文件的扩展名?
我是否必须使用查询来查找扩展?

在jsp中获得结果集后,我是否必须看到内容类型?

您需要在DB表中添加另一列用于内容类型或文件名/扩展名。通过这种方式,您可以将它插入二进制数据并稍后检索。

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

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

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

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

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

参见:

  • 如何检查上传的文件是否是图像?

相关内容

  • 没有找到相关文章

最新更新