2010-08-26 5 views
2

Références:Comment puis-je obtenir les noms "heureux" à l'aide de plug-in Amazon S3 pour Grails (via Jets3t)

Par nom "heureux", Je veux dire le vrai nom du fichier que je télécharge ... par exemple, si je mets un fichier appelé "foo.png", je m'attendrais à ce que l'URL du fichier soit /foo.png. Actuellement, je reçois juste ce qui semble être un GUID (sans extension de fichier) pour le nom de fichier.

Des idées?

Répondre

2

Vous pouvez définir le champ de clé sur l'objet S3Asset pour obtenir ce dont vous avez besoin.

Je mettrai à jour la page doco avec plus d'informations à ce sujet.

+0

Sweet, qui l'a fait! – longda

2

Avec length, inputstream et fileName donné à partir du fichier téléchargé, vous devriez obtenir ce que vous voulez avec le code suivant:

 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) 

J'espère que ça aide.

1

solution réelle (fournie par @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);