繁体   English   中英

在play框架中读取上传文件

[英]read upload file in play framework

我正在使用播放框架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)

可能是静态文件一次加载了吗? 我该如何解决?

最好制定上传文件夹中的应用程序的文件夹之外,并添加它就像路径/home/navins/upload-folder/application.conf ,那么你就可以访问它的全部时间,你也可以在那里上传文件不仅适用于应用程序(即通过FTP),无需重启。

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

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

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

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

然后,更改route conf,您可以通过方法访问文件。

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

    renderBinary(file, ContentType);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM