2017-02-13 68 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转移到使用Keystone 4的集中式“Types.File”类型。您需要使用它们的[Amazon S3存储适配器](https://github.com/ keystonejs/keystone-storage-adapter-s3)创建模式时。不过,它看起来好像'generateFilename'函数没有收到对Keystone 4中要更新的项目的引用。 [更多阅读](https://github.com/keystonejs/keystone/wiki/File-Fields-Upgrade-Guide) –

+0

是的,我使用s3 adpter,它工作。但我想为不同的项目有不同的子目录。怎么做? s3:{ path:'uploads', headers:{ 'x-amz-acl':'public-read', }, },这会上传到/ upload,我想要/上传/ item_id/xxx – mikeso