您好我的问题是如何在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视图中获得回复的共鸣,我可以通过链接下载它
答案 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
您可能需要添加ContentType
和Content 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"));
}