奇怪的字符而不是图像

时间:2013-06-27 06:11:51

标签: html image jsp postgresql binary

我有Servlet API/JSP媒体门户网站。今天我添加了JQuery插件用于查看图像,这些图像由PostgreSQL bytea字段动态存储和加载。如果我尝试在本地计算机上查看图像,一切正常。但是当我尝试从数据库中查看图像时 - 我得到了许多奇怪的字符而不是img。在网页上有来自DB的所有图像,我看到它们正确呈现。所以这不是标题中的麻烦(设置为img / jpg)。我出于某种原因无法在插件中查看它们。这是我加载它们的方式。我循环遍历所有图像的ID并从servlet返回二进制数据,这将成为图像的src属性。

<c:forEach var="imageID" items="<%= currentUser.getImageIDs()%>">
<a class="group2" href="<%= request.getContextPath() + "/imageservlet?id="%>${imageID}"><img src="<%= request.getContextPath() + "/imageservlet?id="%>${imageID}" ></a>
</c:forEach>

请指出这个问题的解决方案。如果需要更多信息 - 没有问题。 谢谢你的建议。 纳扎尔

1 个答案:

答案 0 :(得分:0)

Bytea类型可能会在PostgreSQL中造成一些困难,因为许多接口需要单独的unescaping,并且可用的转义方法可能会随PostgreSQL版本而改变。这里没有足够的信息来给出答案,但有足够的信息可以帮助您开始排除故障。

通常,您可能会遇到一些类型为bytea的问题。

  1. 您是否正确处理输入时的转义?

  2. 您是否意外地在输入中修改了文件?

  3. 文件是否在输出中正确转义?

  4. 文件是否在输出中被破坏?

  5. 现在问题2和4都在你的代码中,而1和3通常与你正在使用的框架有关(并且可能在那里滥用)。但是,您需要首先运行完整的圆测试并将最终输出与输入进行比较,然后逐步查看已更改的内容(十六进制编辑器可以帮助识别某些类型的问题)。