我怎样才能得到;“快乐”;使用AmazonS3插件为Grails命名(通过Jets3t)

我怎样才能得到;“快乐”;使用AmazonS3插件为Grails命名(通过Jets3t),grails,amazon-s3,grails-plugin,jets3t,Grails,Amazon S3,Grails Plugin,Jets3t,参考资料: 所谓“快乐”的名字,我指的是我上传的文件的真实名称。。。例如,如果我放置一个名为“foo.png”的文件,我希望该文件的url为/foo.png。目前,我只是得到文件名的GUID(没有文件扩展名) 有什么想法吗?通过上传文件中给出的长度、输入流和文件名,您应该可以通过以下代码实现您想要的: S3Service s3Service = new RestS3Service(new AWSCredentials(accessKey, secretKey))

参考资料:

所谓“快乐”的名字,我指的是我上传的文件的真实名称。。。例如,如果我放置一个名为“foo.png”的文件,我希望该文件的url为/foo.png。目前,我只是得到文件名的GUID(没有文件扩展名)


有什么想法吗?

通过上传文件中给出的
长度
输入流
文件名
,您应该可以通过以下代码实现您想要的:

        S3Service s3Service = new RestS3Service(new AWSCredentials(accessKey, secretKey))
        S3Object up = new S3Object(s3Service.getBucket("myBucketName"), fileName)
        up.setAcl AccessControlList.REST_CANNED_PUBLIC_READ
        up.setContentLength length
        up.setContentType "image/jpeg"
        up.setDataInputStream inputstream
        up = s3Service.putObject(bucket, up)

我希望这会有所帮助。

您可以在S3Asset对象上设置关键字段以实现所需的功能

我将在doco页面上更新更多信息。

实际解决方案(由@leebutts提供):

import java.io.*;
import org.grails.s3.*;

def s3AssetService;
def file = new File("foo.png"); //assuming this file exists     
def asset = new S3Asset(file);
asset.mimeType = extension;
asset.key = "foo.png"
s3AssetService.put(asset);