0

我正在使用播放框架 2.1.0,将文件上传到play-app/upload文件夹。

然后我运行play 'start -Dhttp.port=80'启动服务器。

但是当我将文件上传到play-app/upload文件夹时,它不能立即访问。

如果我停止服务器并重新启动,那么我可以访问该文件。

我怎么解决这个问题?非常感谢。

ps,我的路线/upload如下:

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

会不会是静态文件加载一次?我该如何解决?

4

3 回答 3

1

Preferably create upload folder outside the application's folder and add it's full path like /home/navins/upload-folder/ in application.conf, then you'll be able to access it whole time, also you will be able to upload files there not only with app (ie, by FTP) without need of restarting.

于 2013-03-27T09:39:57.290 回答
1

我认为您需要定义一种Remote assets控制器。基本上,上传文件后,您将其放在应用程序文件夹之外的文件夹中。然后,使用可以让您访问它的控制器。这是一个例子:http ://www.jamesward.com/2012/08/08/edge-caching-with-play2-heroku-cloudfront

在这里,James Ward 创建了一个控制器来访问存储在云端的资产,您需要做的是编写一个类似的控制器并将“内容 url”替换为“已上传文件目录”的绝对路径。

于 2013-03-29T09:35:45.093 回答
1

最后我通过在控制器中添加访问方法来解决它:

public static Result view(String filename) {
    File file  = new File(Play.application().path().getAbsolutePath() + "/upload/" + filename);
    return ok(file);
}

然后,更改路由配置,您可以通过该方法访问文件。

顺便说一句,如果您使用的是 2.0 以下的播放框架,您可以使用:

    renderBinary(file, ContentType);
于 2013-03-29T16:52:04.703 回答