Обнаружена ошибка «Не удалось загрузить документ PDF». в scala при отправке pdf-файла в виде байтового массива в ответ (scala) - PullRequest
0 голосов
/ 26 февраля 2020

Я пишу приведенный ниже код для отправки файла PDF в качестве ответа, но я застрял в одном месте, он выдаст ошибку «Не удалось загрузить документ PDF».

Код:

def downloadResumeFile(downloadFilePath: String, response: HttpServletResponse): ResponseEntity[String] = {

    val filename = "somefile.pdf"
    val file = new File(filename)
    println(file.exists())
    val fis = new FileInputStream(file)
    var data = new Array[Byte](file.length.asInstanceOf[Int])
    fis.read(data)
    val bos = new ByteArrayOutputStream()
    data = bos.toByteArray

    response.setContentType("application/pdf; charset=UTF-8")
    response.setHeader("Content-Disposition", s"attachment;filename="+downloadFilePath)
    response.setCharacterEncoding("UTF-8")
    val servletOutputStream = new PrintWriter(response.getOutputStream)
    servletOutputStream.println(data)

    fis.close()
    bos.flush()
    bos.close()
    servletOutputStream.flush()
    servletOutputStream.close()

    ResponseEntity.ok("File downloaded")

  }

Может кто-нибудь помочь мне выбраться из этого вопроса?

1 Ответ

1 голос
/ 27 февраля 2020

A PrintWriter полезно для написания текста, но PDF - это двоичные данные.

val out = response.getOutputStream
java.nio.file.Files.copy(file.toPath, out)
out.flush()

...