在Heroku上的Play Framework中处理文件上载

时间:2011-09-06 01:23:42

标签: heroku amazon-s3 playframework

  

可能重复:
  Store Blob in Heroku (or similar cloud services)

我意识到Heroku有一个只读文件系统,并且已经查看了有关attachment_fu和其他类似Ruby gems的SO问题,以便以短暂的方式处理文件上传,这样它们就不会真正打到磁盘(除了临时)直到他们写入Amazon S3。但是,我想在即将推出的项目中使用Play Framework(Java),并且需要支持将图片上传到图库。

显然我需要使用像S3这样的可写后备存储或数据库blob字段:只要它适用于低容量网站(每月几百个请求),我就不会嫁给任何一个。有没有人用Heroku上的Play做过这个?我是Play Framework的新手,也是Heroku的新手,所以即使是非常明显的答案也会有所帮助!

1 个答案:

答案 0 :(得分:4)

我举一个如何在github上使用Amazon S3执行此操作的示例:
https://github.com/jamesward/plays3upload

基本上你只需要将文件发送到S3并将密钥保存在实体中:

AWSCredentials awsCredentials = new BasicAWSCredentials(System.getenv("AWS_ACCESS_KEY"), System.getenv("AWS_SECRET_KEY"));
AmazonS3 s3Client = new AmazonS3Client(awsCredentials);
s3Client.createBucket(BUCKET_NAME);
String s3Key = UUID.randomUUID().toString();
s3Client.putObject(BUCKET_NAME, s3Key, attachment);
Document doc = new Document(comment, s3Key, attachment.getName());
doc.save();
listUploads();