Play Framework中可下载的xml文件

时间:2015-08-10 16:26:08

标签: scala playframework

我在这里是Scala / PlayFramework菜鸟,所以请对我很轻松:)。

我正在尝试创建一个操作(提供GET请求),这样当我在浏览器中输入url时,浏览器应该下载该文件。到目前为止,我有这个:

def sepaCreditXml() = Action {
  val data: SepaCreditTransfer = invoiceService.sepaCredit()
  val content: HtmlFormat.Appendable = views.html.sepacredittransfer(data)
  Ok(content)
}

它的作用基本上是在浏览器中显示XML(而我实际上希望它下载文件)。另外,我有两个问题:

  1. 我不确定使用Play的模板“views.html ...”是创建XML模板的最佳选择。它是好/简单还是我应该使用不同的解决方案?

  2. 我在Play的文档中找到了Ok.sendFile。但它需要一个java.io.File。我不知道如何从HtmlFormat.Appendable创建一个文件。我更愿意在内存中创建一个文件,即没有new File("/tmp/temporary.xml")

  3. 编辑:这里的SepaCreditTransfer是一个包含一些数据的案例类。没什么特别的。

1 个答案:

答案 0 :(得分:1)

我认为浏览器可视化XML而不是下载XML是很正常的。您是否尝试使用package com.package; import java.util.HashMap; import java.util.Properties; import java.util.Map; import java.util.List; import java.lang.Object; import kafka.consumer.Consumer; import kafka.consumer.ConsumerConfig; import kafka.consumer.ConsumerConnector; import kafka.consumer.ConsumerIterator; import kafka.consumer.KafkaStream; public class ExampleConsumer { public void exampleConsumer(){ Properties props = new Properties(); props.put("zk.connect", "localhost:2181"); props.put("zk.connectiontimeout.ms", "1000000"); props.put("groupid", "test_group"); ConsumerConfig consumerConfig = new ConsumerConfig(props); ConsumerConnector consumerConnector = (ConsumerConnector) Consumer.createJavaConsumerConnector(consumerConfig); Map<String, Object> topicCountMap = new HashMap<String, Object>(); topicCountMap.put("test", new Integer(1)); Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = (Map<String, List<KafkaStream<byte[], byte[]>>>) consumerConnector.createMessageStreams((scala.collection.Map<String, Object>) topicCountMap); KafkaStream<byte[], byte[]> stream = consumerMap.get("test").get(0); ConsumerIterator<byte[], byte[]> it = stream.iterator(); while(it.hasNext()) System.out.println(new String(it.next().message())); } } 内容类型标题,如下所示?

<dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.10</artifactId>
        <version>0.8.2.1</version>
        <scope>compile</scope>
</dependency>
        <dependency>
                <groupId>org.apache.kafka</groupId>     
                <artifactId>kafka-clients</artifactId>
                <version>0.8.2.1</version>
                <scope>compile</scope>
        </dependency>