如何在Play Framework 2中提供具有恢复功能的文件下载?

时间:2014-06-11 09:59:10

标签: file download playframework-2.0 resume

如何在Play Framework 2中使用恢复功能提供文件下载?

我曾经使用过这条路线:

GET         /assets/*file           controllers.Assets.at(path="/public", file)

和这个动作:

public static Result downloadFile(String filePath) {
    File file = new File("public/files/"+filePath);
    return ok(file);
}

但他们没有用。

3 个答案:

答案 0 :(得分:2)

您应该使用HTTP字节范围。我知道这是视频流的问题,这里有一个拉取请求:

https://github.com/playframework/playframework/issues/1097

但这不是Play本身的一部分。

答案 1 :(得分:1)

您可以在Apache Http服务器后面设置Play并将下载委派给Apache,方法是将其添加到Apache Http Server的apache2.conf文件中:

<VirtualHost *:80>
   ServerName <domainname.com>
   #This skips the proxy if the url is <domainname.com>/downloads
   ProxyPass /downloads !
   Alias /downloads /var/www/html/downloads

   ProxyPreserveHost On
   ProxyPass / http://127.0.0.1:9000/
   ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>

之后在routes.conf中添加指向下载文件的路由

/downloadapp     controllers.Application.download()

在下载方法中使用以下内容:

public static Result download() 
{
    return redirect("http://<yourdomain.com>/downloads/file.rar");
}

或者只是将链接直接放在html页面中。

<a href=”http://<yourdomain.com>/downloads/file.rar”>Download</a>

答案 2 :(得分:0)

我在github上使用了以下代码(java),效果很好:

https://gist.github.com/felix-schwarz/8385098