2017-02-13 1 views

ответ

0

Тип Keystone Types.S3File имеет опцию filename, которую вы можете установить для пользовательской функции, чтобы определить ваше собственное имя файла. Documentation Link

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

item имеет все свойства текущего элемента, так что вы можете установить его item.name, если это значение существует.

+0

не работает над 4.0.0-beta 5 – mikeso

+0

Keystone переместился в централизованный тип Type.File с Keystone 4. Вам понадобится использовать [Адаптер хранения Amazon S3] (https://github.com/) keystonejs/keystone-storage-adapter-s3) при создании вашей схемы. Также кажется, что функция 'generateFilename' не получает ссылку на элемент, который будет обновляться в Keystone 4. [More reading] (https://github.com/keystonejs/keystone/wiki/File-Fields-Upgrade-Guide) –

+0

Да, я использую s3 adpter и работает. но я хочу иметь разные sub-dir для разных элементов. как это сделать? s3: { Путь: 'uploads', заголовки: { 'x-amz-acl': 'public-read', }, }, это будет загружать/загружать, я хочу/upload/item_id/xxx – mikeso