Я хочу сохранить файл на S3, и каждый элемент будет иметь свой собственный путь, например base/item._id/filename
. Как это можно сделать?KeystoneJsS: путь к файлу S3 для каждого элемента
Кажется, имя файла автогенерируется, и опция не работает.
Я хочу сохранить файл на S3, и каждый элемент будет иметь свой собственный путь, например base/item._id/filename
. Как это можно сделать?KeystoneJsS: путь к файлу S3 для каждого элемента
Кажется, имя файла автогенерируется, и опция не работает.
Тип 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
, если это значение существует.
не работает над 4.0.0-beta 5 – mikeso
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) –
Да, я использую s3 adpter и работает. но я хочу иметь разные sub-dir для разных элементов. как это сделать? s3: { Путь: 'uploads', заголовки: { 'x-amz-acl': 'public-read', }, }, это будет загружать/загружать, я хочу/upload/item_id/xxx – mikeso