播放框架下载文件

时间:2012-04-19 14:54:04

标签: playframework playframework-1.x

我是Play框架中的新手我希望以下列方式下载文件:

  • 从数据库中提取文件路径。
  • 单击路径应该在Web表单中打开文件。

是否可以在游戏框架中进行?如果是,请考虑给我一些想法...

由于

4 个答案:

答案 0 :(得分:4)

使用播放控制器可以轻松地下载文件,如下所示,

public Result downloadFile(){
    File fileToDownload = new File("/path/fileToDownload.pdf"):

    response().setContentType("application/x-download");
    response().setHeader("Content-disposition", "attachment; filename=fileToDownload.pdf");

    return ok(fileToDownload);
}

Scala方式

def downloadFile = Action {
  Ok.sendFile(
  content = new java.io.File("/path/fileToDownload.pdf"),
  fileName = _ => "fileToDownload.pdf"
  )
}

答案 1 :(得分:2)

如果您的意思是服务器上的文件路径,那么这是微不足道的。只需使用renderBinary方法即可。这可以采用输入流或File对象,所以......

renderBinary(new File(filepath));

应该这样做。

答案 2 :(得分:0)

File file = new File("file pathfr");
return ok(file);

答案 3 :(得分:0)

一个例子

在JPA模型中

@Lob
@Column(name="NY_FILE",length=100000, nullable=false)
private byte[] myFile;

@Column(name="MIME_TYPE", nullable=false)
private String mimeType;

控制器

@play.db.jpa.Transactional(readOnly=true)
public Result download(Long id){
    myPOJO = arquivo.findByid(JPAapi.em(), id);
    return ok(MyPOJO.getMyFile()).as(myPOJO.getMimeType());
}

路由文件

GET     /download/:id   @controllers.MyController.download(id:Long)

HTML链接

<a id="linkDownload" href="/download/@myPOJO.getMyFile.getId" target="_blank">
   @myPOJO.getMyFile.getName
</a>