Wie kann ich „glücklich“ Namen Amazon S3-Plugin für Grails (via Jets3t) erhalten
-
01-10-2019 - |
Frage
Referenzen:
- http://www.grails.org/plugin/amazon-s3
- http://svn.codehaus.org/grails-plugins/grails-amazon-s3/trunk/grails-app/services/org/grails/s3/S3AssetService.groovy
- http://svn.codehaus.org/grails-plugins/grails-amazon-s3/trunk/grails-app/domain/org/grails/s3/S3Asset.groovy
Mit dem „glücklich“ Namen, ich meine die echten Namen der Datei Ich bin uploading ... zum Beispiel, wenn ich eine Datei namens bin setzen „foo.png“ Ich würde die URL in die Datei erwarten sein /foo.png. Derzeit ist ich nur bekommen, was eine GUID zu sein scheint (ohne Dateierweiterung) für die Dateinamen.
Irgendwelche Ideen?
Lösung
Sie können das Tastenfeld auf dem S3Asset Objekt gesetzt zu erreichen, was Sie benötigen.
Ich werde die doco Seite mit mehr Informationen zu diesem Thema aktualisieren.
Andere Tipps
Mit length
, inputstream
und fileName
aus der hochgeladenen Datei angegeben, sollten Sie erreichen, was Sie mit dem folgenden Code werden sollen:
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)
Ich hoffe, es hilft.
Die tatsächliche Lösung (wie durch @leebutts zur Verfügung gestellt):
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);