2017-02-13 3 views
0

Ich möchte meine Datei in S3 speichern und jedes Element wird seinen eigenen Pfad haben, wie base/item._id/filename. Wie erreicht man das?KeystoneJsS: S3 Dateityp Pfad für jedes Element

Es scheint der Dateiname ist automatisch generiert und die Option funktioniert nicht.

Antwort

0

Keystones Types.S3File Typ hat eine filename Option, die Sie auf eine benutzerdefinierte Funktion festlegen können, um Ihren eigenen Dateinamen zu bestimmen. Documentation Link

{ 
    type: Types.S3File, 
    filename: function(item, filename) { 
     // prefix file name with object id 
     return item._id + '-' + filename; 
    } 
} 

item hat alle Eigenschaften des aktuellen Elements, so dass Sie es auf item.name einstellen könnte, wenn dieser Wert vorhanden ist.

+0

funktioniert nicht auf 4.0.0-beta 5 – mikeso

+0

Keystone wurde mit Keystone 4 in einen zentralisierten 'Types.File'-Typ verschoben. Sie müssen ihren [Amazon S3-Speicheradapter] verwenden (https://github.com/ keystonejs/keystone-storage-adapter-s3) beim Erstellen Ihres Schemas. Es scheint auch so, als ob die 'generateFilename'-Funktion keinen Verweis auf das in Keystone 4 zu aktualisierende Element erhält. [Mehr lesen] (https://github.com/keystonejs/keystone/wiki/File-Fields-Upgrade-Guide) –

+0

ja, ich benutze s3 adpter und es funktioniert. aber ich möchte unterschiedliches Unterverzeichnis für anderes Einzelteil haben. wie es geht? s3: { Pfad: 'uploads', Kopfzeilen: { 'x-amz-acl': 'public-read', }, }, dies wird hochgeladen/Upload, ich möchte/upload/item_id/xxx – mikeso

Verwandte Themen