我已将 pdf 文件存储为 blob,当我尝试在浏览器中将其呈现为 pdf 时,它看起来像这样:
%PDF-1.4 %���� 5 0 obj <>stream x��[]s�6}
这是我在使用的控制器中的操作 def showDetails = {
def product = Sample.get(params.id)
response.contentType = 'application/pdf'
response.setHeader('Content-disposition', 'attachment; filename=file.pdf')
response.getOutputStream().write(product.file)
response.getOutputStream().flush()
}
我也尝试添加response.characterEncoding = "utf 8"
,但也没有用。
澄清一下:我有一个将 pdf 文件存储为 blob 的表单。一旦对象存储在数据库中,对象和一些参数(名称、日期等)就会出现在我的应用程序中。该名称是可点击的,它将在 div 中呈现指向 blob 文件的链接:
<g:remoteLink id="${s.id}" update="details" controller="submitSample"action="showDetails" >${s.sampleNameID}</g:remoteLink></td>
如果我像这样将 getOutputStream 更改为 getBytes() ,我会收到此错误:
No signature of method: [B.getBytes() is applicable for argument types: () values: []
可能的解决方案:getClass()、getAt(groovy.lang.ObjectRange)、getAt(java.lang.Integer)、getAt(groovy.lang.IntRange)、getAt(java.lang.String)、getAt(groovy.lang.Range )。
简单地使用 product.file 会给我输出乱码。