【问题标题】:Use akka to stream contents of streaming file as a HttpResponse使用 akka 将流文件的内容作为 HttpResponse 流式传输
【发布时间】:2022-06-10 21:19:27
【问题描述】:

我有一个通过 Java FileInputStream 读取的大文件。在阅读此文件时,我想将其内容流式传输回客户端(以 akka HttpResponse 的形式)。我想知道这是否可能,我将如何做到这一点?

根据我的研究,可以使用 EntityStreamingSupport,但仅支持 json 或 csv 数据。我将从文件中流式传输原始数据,不会采用 json 或 csv 的形式。

【问题讨论】:

    标签: java akka akka-stream akka-http


    【解决方案1】:

    假设您使用 akka-http 和 Scala,您可以使用 getFromFile 将二进制文件从 path 流式传输到 HttpResponse,如下所示:

    path("download") {
      get {
          entity(as[FileHandle]) { fileHandle: FileHandle =>
          println(s"Server received download request for: ${fileHandle.fileName}")
          getFromFile(new File(fileHandle.absolutePath), MediaTypes.`application/octet-stream`)
          }
        }
     }
    

    取自此文件上传/下载往返 akka-http 示例: https://github.com/pbernet/akka_streams_tutorial/blob/f246bc061a8f5a1ed9f79cce3f4c52c3c9e1b57a/src/main/scala/akkahttp/HttpFileEcho.scala#L52

    希望对你有帮助

    保罗

    【讨论】:

      猜你喜欢
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      相关资源
      最近更新 更多