使用a-tag Play Framework下载文件

时间:2016-06-25 16:32:18

标签: playframework playframework-2.0

您好我的问题是如何在Play框架中处理下载 我的代码在JAVA。

User user = User.find.byId(Long.parseLong(id));
    File tempFile = null;
    try {
        tempFile = File.createTempFile(user.attachment_name, ".zip", null);
        FileOutputStream fos = new FileOutputStream(tempFile);
        fos.write(user.attachment);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

        return ok(tempFile);

但是我不知道如何能够在HTML视图中获得回复的共鸣,我可以通过链接下载它

1 个答案:

答案 0 :(得分:1)

您需要创建一个Result功能来下载内容。例如:

public static Result download(String id) throws IOException {
  User user = User.find.byId(Long.parseLong(id));
    File tempFile = null;
    try {
        tempFile = File.createTempFile(user.attachment_name, ".zip", null);
        FileOutputStream fos = new FileOutputStream(tempFile);
        fos.write(user.attachment);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return ok(tempFile);
}

路线:GET /download controllers.Application.download(id)

如果您有项目的下载链接,则其href应为href="@routes.Application.download(id)"。您需要传递id(我相信您使用的是用户ID)才能查看能够使用id

您可能需要添加ContentTypeContent disposition

response().setContentType("application/octet-stream");
response().setHeader("Content-disposition", "attachment; filename=yourFileName.pdf");

其他选项是play框架支持serving files。如果文件夹中已有文件,则只需指定路径并让框架执行该过程。

public Result index() {
    return ok(new java.io.File("/tmp/fileToServe.pdf"));
}