Я хранится файл в формате PDF в виде сгустка,, когда я пытаюсь сделать это в формате PDF в браузере, это выглядит следующим образом:Grails блоб в формате PDF
%PDF-1.4 %���� 5 0 obj <>stream x��[]s�6}
Это мое действие в контроллере Я использую Защиту 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:
<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, я получаю искаженный вывод.
Что такое product.file, это java.io.File или Blob? Если это blob, вам нужно сначала преобразовать его в массив байтов. –