Как получить «счастливые» имена с помощью плагина Amazon S3 для Grails (через Jets3t) - PullRequest
2 голосов
/ 26 августа 2010

Ссылки:

По "счастливым" именам,Я имею в виду настоящее имя файла, который я загружаю ... например, если я помещаю файл с именем "foo.png", я ожидаю, что URL-адрес файла будет /foo.png.В настоящее время я просто получаю то, что выглядит как GUID (без расширения файла) для имени файла.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 27 августа 2010

Вы можете установить ключевое поле на объекте S3Asset для достижения того, что вам нужно.

Я обновлю страницу документации с более подробной информацией по этому вопросу.

2 голосов
/ 27 августа 2010

С length, inputstream и fileName, заданными из загруженного файла, вы должны достичь желаемого с помощью следующего кода:

        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)

Надеюсь, это поможет.

1 голос
/ 27 августа 2010

Фактическое решение (предоставленное @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);
...